Шаблоны внутри стилей отвечают за HTML-составляющую того, что будет выводиться пользователю. Вы можете выбрать шаблон интересующей вас страницы и внести в него любые изменения.
Управление шаблонами
Работа с шаблонами выполняется из вкладки "Шаблоны" вашего стиля. В этом разделе можно добавлять системные файлы шаблонов в свой стиль и изменять их по своему усмотрению. Если файл какого-либо шаблона присутствует в стиле, система будет использовать именно его, а не системную версию.
- Для добавления шаблона в свой стиль, найдите его в списке и нажмите кнопку "Добавить".
- Редактирование шаблона выполняется по кнопке "Правка" через встроенный редактор.
- Вы можете скачать шаблон, кликнув по его названию, поменять содержимое и загрузить вручную через FTP в папку
tplвашего стиля. - Вы также можете добавить шаблон с произвольным названием для использования в собственных модулях.
Наиболее полезные шаблоны, которые пригодятся вам в работе:
home- лендинг на главной странице.login- форма входа, регистрации и восстановления пароляheader- заголовочная часть сайта, включая верхнее и боковое меню.footer- подвал сайта с копирайтом JS-кодом.
Мы рекомендуем даже не влезать в другие шаблоны и ограничиться изменением этих. Оставьте внутреннюю часть сайта в покое простой сменой названий классов через макросы. В противном случае вам придётся сверять изменения в своих и системных шаблонах при выходе каждой новой сборки. Новые сборки появляются от одного раза в несколько дней до нескольких раз в течение одного дня.
Синтаксис шаблонизатора
Встроенный шаблонизатор чем-то напоминает Smarty, в основе его идеи лежит система шаблонов phpBB2. Шаблонизатор поддерживает вставку переменных, повторяющихся блоков и условных блоков.
Вставка обычной переменной:
{myvar}
Вставка макроса:
{tpl:macroname}
Вставка повторяющихся блоков выполняется с помощью <!-- BEGIN xxx --> в начале блока и <!-- END xxx --> в конце. Вставка переменных внутри блока производится через точку: {xxx.yyy}. Если используются вложенные блоки, необходимо указать всю цепочку блоков в переменной: {xxx.yyy.zzz.aaa}.
<!-- BEGIN offer -->
{offer.name}
<!-- BEGIN goal -->
{offer.goal.name}
<!-- END goal -->
{offer.description}
<!-- END offer -->
В шаблоне также можно применять условные операторы. Они всегда проверяют значение только одной переменной, делать комплексные условия нельзя. Вставка условного блока производится с помощью <!-- IFSET xxx --> в начале блока и <!-- ENDIF --> в конце, блок <!-- ELSE --> также предусмотрен. Доступно несколько условных операторов.
IFSET xxx- если значениеxxxистинноIFNOT xxx- если значениеxxxложноELSE- в ином случаеELSEIF xxxилиELIF xxx- в ином случае еслиxxxистинноELSEIFNOT xxxилиELNO xxx- в ином случае еслиxxxистинноIFTPL xxx- если макросxxxистинныйIFNTP xxx- если макросxxxложный
Примеры условных операторов:
<!-- IFSET hasnews -->
{newstext}
<!-- ELSE -->
{nonewshere}
<!-- ENDIF -->
Полезные макросы
При работе с шаблонами, вам будет удобно указывать пути к ресурсам с помощью макросов. Так эти пути будут актуальными при переносе стиля в другую папку.
{tpl:skin}- папка стиля, напримерmystyle.{tpl:skinpath}- путь к стилю, например/skin/mystyle, без слеша в конце.{tpl:skincss}- путь к CSS-файлам, например/skin/mystyle/css, без слеша в конце.{tpl:skinjs}- путь к JS-файлам, например/skin/mystyle/js, без слеша в конце.{tpl:skinimg}- путь к картинкам, например/skin/mystyle/img, без слеша в конце.
Подключение шаблонов в коде
Если вы создаёте свой модуль, для работы с шаблонами вам потребуется несколько простых команд.
Шаблон подключается как именованная сущность документа. Чаще всего для основной части используется имя body, которое мы будем приводить в примерах. Заголовок использует имя header, подвал имя footer. Вы можете использовать любое имя для части, с которой будете работать, просто проверьте, чтобы она всегда шла первым параметром в функцию.
Подготовка шаблона к работе:
$core->skin->load( 'body', 'my-template-file' );
Указание основных параметров массивом ключ-значение:
$core->tpl->vars( 'body', [ 'foo' => 'bar', 'peace' => 'deathz' ] );
Добавление блока, параметры - массивом ключ-значение:
$core->tpl->block( 'body', 'blockname', [ 'myvar' => 'myvalue' ] );
Рендер указанной части:
$core->tpl->output( 'body' );
Делаем закат солнца вручную
Шаблоны из TPL-файлов преобразуются в чистый PHP-код. В теории, вы можете использовать PHP в исходных шаблонах, и он даже будет работать. Мы не рекомендуем этого делать, но не запрещаем вам наслаждаться процессом.
Вставка переменной {myvar} после рендеринга выглядит вот так:
<$= $_data['myvar']; ?>
Вы можете обращаться напрямую к $_data['myvar'] в любом участке кода, данная переменная активна и определена везде в рамках шаблона.
Вставка блочной переменной {blockname.myvar} после рендеринга выглядит вот так:
<$= $blockname['myvar']; ?>
Вы можете обращаться к переменной $blockname['myvar'] только внутри указанного блока, она не определена за его пределами.
Массив $_data содержит в себе все данные шаблонизатора, в том числе и вложенные блоки. Ключи основных переменных соответствуют их названиям в шаблоне, ключи блоков содержат в конце точку.
$_data = [
'myvar' => 'foo',
'blockname.' => [
'myvar' => 'bar',
'nestedblock.' => [
'onemore' => 'variable'
]
]
];
Ручная реализация шаблонов не рекомендуется. Но выглядит заманчиво.