Шаблонизатор MACRO - это одновременно и мощный, и легко расширяемый, и быстрый инструмент php-разработчика для создания шаблонов. MACRO позволяет легко и чисто разделять презентационную логику от логики приложения, при этом не требует много времени на первоначальное освоение.
В рамках данного раздела мы рассмотрим основные элементы шаблонов MACRO.
{{insert into="content_zone" file="page.phtml"}} <img src={$#photo.largeFileUrl} /> <dl> <dt>Автор:</dt><dd>{$#photo.member.name}</dd> <dt>Категория:</dt><dd>{$#photo.category.title}</dd> <dt>Название:</dt><dd>{$#photo.title}</dd> <dt>Теги:</dt> <dd> {{list using='{$#photo.tags}' as='$tag'}} <ul> {{list:item}} <li>{$tag.title|uppercase}</li> {{/list:item}} </ul> {{list:default}} Нет тегов {{/list:default}} {{/list}} </dd> {{insert file="photo/marks.phtml"/}} </dl> {{/insert}}
В нашем примере:
{{insert into="content_zone" file="page.phtml"}}...{{/insert}} {{list using='{$#photo.tags}' as='$tag'}}...{{/list}}
Теги обычно должны иметь закрывающий тег (как list или insert), но могут и не иметь.
Теги могут содержать один или несколько атрибутов. Например, list тег содержит атрибуты using и as.
К тегам могут применяться некоторые правила. Например, одни теги могут находиться только внутри других тегов, некоторые теги должны содержать обязательные атрибуты, некоторые атрибуты должны содержать только определенные значения и т.д. В большинстве случаев компилятор шаблонов самостоятельно проверяет правильность синтаксиса шаблона и выдает подробное описание ошибки, если она есть.
MACRO содержит достаточное большое количество тегов, которые позволяют выводить списки, компоновать шаблоны, разделять списки на страницы и выводить пейджеры, работать с формами и т.д. Так что в большинстве случаев возможностей базового набора тегов вам должно хватить.
Выражения (output expressions) используются для вывода каких-либо значений переменных.
Выражения в нашем примере:
{$tag.title|uppercase} {$#photo.largeFileUrl}
Выражения, стоящие в шаблонах - это по сути операции echo. В некоторых случаях, когда выражение является атрибутом тега, оно просто указывает на значение какой-либо переменной.
Точкой разделяются части пути до выводимой переменной. Выражение {$tag.title} эквивалентно <?php if(isset($tag['title'])) echo $tag['title']; ?>
Подробно выражения описаны в разделе "Выражения".
Фильтры используются для модификации/форматирования значений, выводимых в выражениях.
Выражения с фильрами в нашем примере:
{$tag.title|uppercase}
Использованы фильтр:
Обычно фильтр представляет из себя враппер для какой-нибудь часто используемой функции php. Однако, ничего не мешает создавать свои уникальные фильтры, так как делать это достаточно просто.
Подробно фильтры описаны в разделе "Фильтры".
Обсуждение