Файлы шаблонов имеют расширение .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" ?>