Файлы шаблонов имеют расширение .php. Шаблон страницы, используемый для всех страниц сайта, называется template (файл template.php).
Для конкретной страницы сайта можно задать отдельный шаблон, указав название шаблона в свойстве страницы @@template. Название шаблона указывается без расширения файла.
Текст шаблона должен быть в той же кодировке, которая указана в настройках движка, опция engine.charset (по умолнчанию это UTF-8).
Для работы с шаблонами в системе создается экземпляр класса ztemplate. В этот же момент происходит подключение файла functions.php используемой темы сайта, где можно создать сайдбары, виджеты, функции и классы, которые в дальнейшем могут быть использованы в шаблоне страницы.
![]() | Замечание |
|---|---|
На момент подключения файла |
Подключение шаблона производится в контексте объекта ztemplate, поэтому к открытым свойствам и методам класса можно обращаться через переменную $this.
Пример 3.1. Использование объекта ztemplate в модуле zmodule_allpages.
К шаблону можно обращаться из модулей. Доступ к объекту шаблона в этом случае можно получить через метод zengine::template(). Например, модуль zmodule_allpages использует объект шаблона для рендеринга списка страниц и замены содержимого конечной страницы полученным результатом.
ob_start();
zengine::template()->setPage($zpage);
foreach ($pages as $pagepath) {
zengine::template()->addPage(zengine::getPage($pagepath));
}
zengine::template()->locateTemplate(
array($this->getParam('template', 'listpages'), 'page'),
true);
$output = ob_get_contents();
ob_end_clean();
zengine::template()->setPageHtml($output);Для работы этого модуля в шаблоне необходимо вызывать функцию z_html(). Для обычных страниц в месте вызова этой функции будет подключена часть шаблона из файла page.php.
Пример 3.2. Получение свойства страницы в шаблоне
Для получения значения свойства используется метод getProperty() объекта страницы. Допустим, у страницы указаны следующие свойства:
@@_myprop=Какой-то текст @@_myarr[]=Первый пункт @@_myarr[]=Второй пункт
Например, в шаблоне для получения значений свойств текущей страницы можно использовать следующий код:
<?php
$myprop = z_page()->getProperty('_myprop');
var_dump($myprop);
// string(26) "Какой-то текст"
$myarr = z_page()->getProperty('_myarr');
var_dump($myarr);
//array(2) {
// [0]=>
// string(23) "Первый пункт"
// [1]=>
// string(23) "Второй пункт"
//}
$mynonexists = z_page()->getProperty('_mynotexists');
var_dump($mynonexists);
// NULL
$mynonexists = z_page()->getProperty('_mynotexists', "default");
var_dump($mynonexists);
// string (7) "default"
?>
Личный кабинет![[Замечание]](/images/note.png)