====== Введение в шаблонную систему 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-шаблон