В первую очередь создайте папку в директории 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 аргумента:
Как вы поняли, она возвращает имя шаблона, который будет использован, в зависимости от текущего пути и языка.
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]mycomponent[/component]
Пример вставки элемента: [element]myelement[/element]
Вы можете использовать элементы для вставки например, логотипа, заголовка или слогана сайта. Для этого создайте в файле tpl.php функцию, которая будет возвращать HTML код, который впоследствии и будет вставлен на место элемента.
Эта функция должна быть названа следующим образом:
tpl_<название элемента>
Таким образом, для элемента myelement, необходимо создать функцию tpl_myelement.
Вы можете обойтись вовсе без элементов, однако для нормальной работы системы, требуется один обязательный элемент - head. Этот элемент выводит мета-теги, стили и скрипты модулей на страницу, поэтому его нужно вставить между тегами <head></head>.
Для более наглядного отображения темы в админке, создайте для нее скриншот в формате JPEG и поместите его в папку вышей темы.
Примечание: Файл со скриншотом должен называться screenshot.jpg и иметь размеры 300х225 px.