Sawanna CMS

Сделай сам свой собственный сайт

Инструкция по созданию тем для Sawanna CMS

В первую очередь создайте папку в директории themes (например mytheme), после чего в ней создайте файл tpl.php и откройте его на редактирование.

В самое начало файла поместите следуюший код:

 

<?php
defined('SAWANNA') or die();

#################################################################
# INFO
# name : Моя тема
# description : Описание моей темы
#################################################################

 

Если вы знакомы с PHP, то первые 2 строчки не должны вызывать у вас вопросов :)

 

Далее идет информационный блок, в котором вы можете задать название и описание своей темы, которое будет отображаться в админке. С точки зрения PHP этот блок представляет из себя комментарий и полностью игнорируется, но Sawanna CMS попробует найти ключевые слова INFO и следующие за ним name и description, которые как раз и указывают на название и описание темы соответственно.

 

Файл tpl.php должен содержать 5 обязательных функций:

 

function tpl($location='',$language='')
{
    switch(true)
    {
         default:
            $tpl= 'main';
            break;
    }
    
    return $tpl;
}

 

Функция tpl получет 2 аргумента:

  • $location - текущий путь,
  • $language - текущий язык

Как вы поняли, она возвращает имя шаблона, который будет использован, в зависимости от текущего пути и языка.

 

function css($location='',$language='')
{
    switch(true)
    {
         default:
            $css='main';
            break;
    }
    
    return $css;
}

 

Далее идет функция css, которая возвращает имя файла стилей по тому-же принципу, получая те-же 2 аргумента.

Примечание: Обратите внимание, что возвращаемые названия файлов не содержат (и не могут содержать) расширения файлов.

 

function components()
{
    $components=array(
        'header' => 'Header',
        'parent-menu' => 'Parent menu',
        'child-menu' => 'Child menu',
        'left' => 'Left Sidebar',
        'left-single' => 'Left Sidebar single',
        'body' => 'Content',
        'right' => 'Right Sidebar',
        'footer' => 'Footer'
    );

    return $components;
}

 

Функция components возвращает ассоциативный массив, со всеми компонентами шаблонов темы. Каждый компонент, перед использованием в шаблоне, должен быть описан здесь.

Левая часть элемента массива представляет системное имя компонента, которое должно использоваться в спец-тегах {component} в коде шаблона, правая же часть - это название компонента, которое отображается в админке (компоненты на странице настроек виджет).

 

function tpl_components($tpl='')
{
    switch ($tpl)
    {
          default:
                $components=array(
                    'header',
                    'parent-menu',
                    'child-menu',
                    'left',
                    'body',
                    'right',
                    'footer'
                );
                break;
    }
    
    return $components;
}

 

Какие именно компоненты будут рендериться при загрузке шаблона, определяется в функции tpl_components.

Она получает аргументом, название текущего шаблона и в соответствии с этим возвращает массив с его компонентами.

 

function duty($location='',$language='')
{
    switch(true)
    {
         default:
            $duty='body';
            break;
    }
    
    return $duty;
}

 

И последняя, обязательная функция - duty.

Она получает уже знакомые вам 2 аргумента - текущий путь и язык и возвращает имя "дежурного" компонента, который используется системой, как компонент по умолчанию, а также для вывода сообщений.

Примечание: именно этот компонент используется для вывода виджет, в настройках которых стоит "Выбирать компонент автоматически".

 

Теперь необходимо создать файлы шаблонов и стилей, которые были заданы функциями tpl и css.

Файлы шаблонов должны иметь расширение .tpl и находится в той же папке. Файлы стилей должны иметь расширение .css

Вы можете использовать обычный HTML, для верстки ваших шаблонов, за тем исключением, что для вставки динамического контента используются спец-теги.

 

В Sawanna CMS есть 2 типа спец-тегов:

  • [component] - служит для вставки содержимого компонента шаблона.
  • [element] - служит для вывода дополнительного содержания, которое не вошло в компоненты.

Вывод компонента формируется из вывода виджет. Вывод элементов шаблона возвращается соответствующей функцией.

 

Пример вставки компонента: [component]mycomponent[/component]

Пример вставки элемента: [element]myelement[/element]

 

Вы можете использовать элементы для вставки например, логотипа, заголовка или слогана сайта. Для этого создайте в файле tpl.php функцию, которая будет возвращать HTML код, который впоследствии и будет вставлен на место элемента.

Эта функция должна быть названа следующим образом:

tpl_<название элемента>

Таким образом, для элемента myelement, необходимо создать функцию tpl_myelement.

 

Вы можете обойтись вовсе без элементов, однако для нормальной работы системы, требуется один обязательный элемент - head. Этот элемент выводит мета-теги, стили и скрипты модулей на страницу, поэтому его нужно вставить между тегами <head></head>.

 

Для более наглядного отображения темы в админке, создайте для нее скриншот в формате JPEG и поместите его в папку вышей темы.

Примечание: Файл со скриншотом должен называться screenshot.jpg и иметь размеры 300х225 px.