Шаблонизатор 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. Однако, ничего не мешает создавать свои уникальные фильтры, так как делать это достаточно просто.
Подробно фильтры описаны в разделе "Фильтры".