Шаблонизатор (библиотека)
Класс site_template.
Основной класс шаблонов.
Документация будет позже, пока некоторые трюки (чтоб не вспоминать самому каждый раз).
Доступ снаружи через функцию tpl($method, $param[, $param1])
Синтаксис шаблонов
Шаблон представляет собой строку HTML вида
head{{{HTML}}}tail
. HTML будет использовано в качестве подстановки, при этом токены вида #key заменятся на соответствующие значения из массива данных. Если в скрипте используется массив вида [string, string1, string2], то для получения данных нужно использовать #ключ, равный названию шаблона.
В строке можно использовать условия:
{{#key||true part|| false part}}
— если #key не существует либо пустой, то выполняется false part, иначе true part.
Если в шаблоне имеется ключ raw (в функцию add была передана $data как строка), то содержимое ключа будет вставлено после массива данных.
Если в скрипт передать пустой шаблон, то он автоматически заменится на {{{}}}
.
Основные методы:
add
Вызов: tpl("add", $object, $data); где $object — имя шаблона, $data может быть одним из следующих:
- Строка (при этом эта строка попадёт в специальный ключ 'raw'
- массив вида [string1, string2, string3, …]
- набор массивов вида [key=>value, key2=>value2…];
Предназначена для заполнения шаблона данными.
show
Вызов: tpl('show', $object[, $tpl]); где $object — имя шаблона, $tpl — шаблон. Если шаблон не указан, то берётся таковой из конфига шаблона (ключ template).
Возврат: получившаяся строка.
Если настройка шаблона 'echo' выставлена в true, функция также запишет получившуюся строку в выходной поток.
getIcon
Вызов: tpl('getIcon', $iconName)
, где $iconName — одна из стандартных иконок kSite.
Возврат: строка содержащая полный URL к файлу иконки на сайте.
getIconText
Вызов: tpl('getIcon', $iconName)
, где $iconName — одна из стандартных иконок kSite.
Возврат: строка-название иконки.
getImage
Вызов: tpl('getImage', $iconName[, $text])
, где $iconName — одна из стандартных иконок kSite, $text — строка название рисунка.
Возврат: полностью готовый тег img.
Примеры:
tpl("add", $tplName, array (
"newPage" => array ( "url" => makeURL(filter::GET('editTopic'),'index',"action=newPage&module=edit"), "title" => "Новая страница" ),
"viewTopic" => array ( "url" => makeURL(filter::GET('editTopic'),'index',"action=viewTopic&module=edit"), "title" => "Просмотр раздела" )
);`
tpl("show", $tplName, '<ul>{{{<li>{{#url||<a href="#url" #add>#name</a>||<b>#name</b>}}</li>}}}</ul>');
tpl("add", $tplName, "String" );`
tpl("show", $tplName, "");
tpl("add", 'js', array('pagefunc.js', 'highlight.js', 'main_lib.js', 'pWindow.js'));`
tpl("show", 'js', '{{{<script type="text/javascript" src="'.SITE_URL.'js/#js"></script>}}}');