====== Введение в шаблонную систему MACRO ====== Шаблонизатор MACRO - это одновременно и мощный, и легко расширяемый, и быстрый инструмент php-разработчика для создания шаблонов. MACRO позволяет легко и чисто разделять презентационную логику от логики приложения, при этом не требует много времени на первоначальное освоение. В рамках данного раздела мы рассмотрим основные элементы шаблонов MACRO. ===== Пример шаблона ===== {{insert into="content_zone" file="page.phtml"}}
Автор:
{$#photo.member.name}
Категория:
{$#photo.category.title}
Название:
{$#photo.title}
Теги:
{{list using='{$#photo.tags}' as='$tag'}}
    {{list:item}}
  • {$tag.title|uppercase}
  • {{/list:item}}
{{list:default}} Нет тегов {{/list:default}} {{/list}}
{{insert file="photo/marks.phtml"/}}
{{/insert}}
===== Основные элементы MACRO шаблона ===== ==== Теги ==== В нашем примере: {{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} эквивалентно Подробно выражения описаны в разделе [[.expressions|"Выражения"]]. ==== Фильтры ==== Фильтры используются для модификации/форматирования значений, выводимых в выражениях. Выражения с фильрами в нашем примере: {$tag.title|uppercase} Использованы фильтр: * uppercase - для перевода значения в верхний регистр. По-сути это алиас на php-функцию strtoupper, которая применяется для переменной, указанной в выражении. Обычно фильтр представляет из себя враппер для какой-нибудь часто используемой функции php. Однако, ничего не мешает создавать свои уникальные фильтры, так как делать это достаточно просто. Подробно фильтры описаны в разделе [[.filters_intro|"Фильтры"]]. ==== Дальнейшее чтение ==== * [[.important_details|"Компиляция и выполнение шаблона. Пример рендеринга MACRO шаблона."]] - описывает кратко механизм работы MACRO-шаблонизатора. * [[.data_sources|"Как MACRO получает данные для вывода?"]] - описывает способы передачи данных в MACRO-шаблон