Для составления шаблонов на сайте используется шаблонизатор - простой скриптовый язык, позволяющий без знания синтаксиса и каких-либо сложных языков программирования выводить и форматировать данные.
Простой пример шаблона:
<!DOCTYPE html> <html> <head> <title>{$title}</title> </head> <body> {$content} </body> </html>
В шаблоны передаются различные переменные из страниц и коллекций. Чтобы их вывести, достаточно указать название переменной в фигурных скобках и знаком $ в начале:
{$name}, I am your father! --- Luke, I am your father!
Переменная может быть частью массива или объекта. Тогда её вывод выглядит следующим образом:
{$array.key} {$object->element}
Переменную также можно модифицировать при выводе, например:
{$a=1} // 1 {$b=2} // 2 {$sum=$a+$b} // 3
{$title|cut:10} // Hello Wor... {$title|touppercase|cut:7} // HELLO W...
Если это шаблон модуля страницы, то в него передаются две базовые переменные - {$title} и {$content} - заголовок и содержимое страницы.
В шаблоны модуля коллекции могут передаваться разные переменные, в зависимости от метода генерации страницы или блока. В общем случае есть 2 базовых метода:
В шаблон передается переменная $items. Она содержит массив всех выбранных элементов коллекции, каждый из которых содержит все поля данной коллекции по ключам. Также передается пажинатор - {$pages}, тексты до и после списка - {$text_before} и {$text_after}.
В общем виде вывести её можно, используя цикл, например:
<ul> {loop="items"} <li>{$value.title}</li> {/loop} </ul>
В шаблон передается переменная $item. Она содержит выбранный элементов коллекции со всеми полями. Также могут передаваться предыдущий и следующий элемент - {$prev} и {$next}, и тексты до и после элемента - {$text_before} и {$text_after}.
Пример вывода элемента коллекции:
<h1>{$item.title}</h1> {$item.description}
Можно выводить константы
{#URL#}
http://example.com
Но в системе константы широкого применения не нашли.
Можно подключать другие шаблоны, которые будут выведены взамен кода подключения. Например, использовать общий для всех страниц шаблон шапки и подвала:
{include="common_header"} here goes the content of the website {include="common_footer"}
С помощью конструкции {if} можно проверять справедливость математических условий. Например:
{if="$age<18"} minor {else} adult {/if}
Формат записи - {if="математическое выражение"}{/if}. Поддерживается оператор {else} и множественное деление по {elseif=""}.
Внутри кавычек должен находится код, отвечающий стандартам выражений языка PHP, но в общем случае это простая математика или сравнение переменных, например:
{if="$item.type=='товар'"} это товар {elseif="$item.size > 100"} это что-то большое {else} вообще не понятно что это {/if}
Циклы позволяют поочередно выводить массивы данных. Например:
<ul> {loop="items"} <li>{$counter}: {$key}, {$value}</li> {/loop} </ul>
$counter внутри цикла содержит порядковый номер итерации начиная с 0. $key - ключ элемента массива (обычно - порядковый номер). $value - значение элемента массива. Зачастую, $value также является массивом, и выводится как {$value.ключ_поля_коллекции}
Циклы могут быть вложенными. В таком случае для разделения уровней вывода используется цифровое порядковое обращение, например:
<ul> {loop="items"} <li>Элемент коллекции номер {$value1.id} содержит поля: <ul> {loop="value1"} <li>{$key2}: {$value2}</li> {/loop} </ul> </li> {/loop} </ul>
Вызов функции позволяет использовать PHP-код внутри шаблона и вывести результат его работы.
Например:
{function="date('%Y')"} // 2016
Вызов блока и подстановка результата его выполнения на страницу.
Веб-студия «Инфра» занимается комплексным созданием и продвижением сайтов уже более 16 лет. SEO-оптимизация — основное направление нашей деятельности. Улучшим позиции вашего сайта в поисковых выдачах Яндекс и Google, увеличим посещаемость и количество заявок. Создадим сайт, идеальный для продвижения в поисковых системах.
Заказать разработку сайта