пятница, 17 мая 2013 г.

Сниппет "Submenu "

Создаем сниппет: submenu

<?php
    function snippet_submenu() {
        
        // get the current subpages
        $pages = Page::children(Pages::$requested_page);

        // try to get the parent
        if ( ! isset($pages)) {
            $current_page = Pages::$requested_page;
            $parent_page = '';
            if ($current_page !== 'error404') {
                $page = Pages::$pages->select('[slug="'.$current_page.'"]', null);
                
                // try again if we have a parent                
                if (trim($page['parent']) !== '') {
                    $parent_page = Pages::$pages->select('[slug="'.$page['parent'].'"]', null);
                    $pages = Pages::$pages->select('[parent="'.(string)$parent_page['slug'].'"]', 'all');
                }
            }
        }
        return $pages;
    }
    
    $sub_pages = snippet_submenu();
    if (isset($sub_pages)) {
?>
        <ul class="nav nav-pills">
<?php
        foreach($sub_pages as $page) {
            $li_class_active = '';
            if (Pages::$requested_page == $page['slug']) $li_class_active = ' class="active"';
?>
            <li<?php echo $li_class_active; ?>><a href="<?php echo Site::url() . $page['parent'] . '/' . $page['slug']; ?>"><?php echo $page['title']; ?></a></li>
<?php
        }
?>
        </ul>
<?php
    }
?>

Используем в контенте так:
{snippet get="submenu"}

Используем в шаблоне так:
<?php
    echo Snippet::get('submenu');
?>

Автор сниппета: antiben

четверг, 16 мая 2013 г.

Подключение своих класcов в Monstra 2.2.1

В Monstra 2.2.1 нет возможности автоматически загружать свои классы (будет исправлено) так как классы жестко прописаны в ядре.
Это легко исправить )


Добавить

ClassLoader::directory(ROOT . DS . 'engine' . DS);

Теперь можно размещать свои классы в /engine/ и они будут автоматически грузится Монстрой.

Вывод определенных блоков

Пишем в шаблоне такой код:


<?php
    
    // Выводим блок для определенной страницы
    if (Page::slug() == 'page_slug_here') {
       echo Block::get('my_page_block_here');
    }

?>

среда, 15 мая 2013 г.

Страницы с расширением


Окрываем:
/engine/security.php

Находим:
// Remove characters
$str = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $str );
$str = preg_replace("/[\/_|+ -]+/", $delimiter, $str );
$str = trim($str, $delimiter); 

Заменяем на: 
// Remove characters
$str = preg_replace("/[^a-zA-Z0-9.\/_|+ -]/", '', $str );
$str = preg_replace("/[\/|+ -]+/", $delimiter, $str );
$str = trim($str, $delimiter);  

Склейка дублей

Пример .htaccess


#
# Monstra CMS :: php & apache settings 
#

# Set default charset utf-8
AddDefaultCharset UTF-8

# Don't show directory listings for URLs which map to a directory.

# PHP 5, Apache 1 and 2.

 php_flag magic_quotes_gpc                 off
 php_flag magic_quotes_sybase              off
 php_flag register_globals                 off


# Setting rewrite rules.

 RewriteEngine on
    
 RewriteCond %{HTTP_HOST} ^www.example.org [NC]
 RewriteRule ^(.*)$ http://example.org/$1 [R=301,L] 
 
 RewriteBase /
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)$ index.php [QSA,L]
 Redirect 301 /home http://example.org/