Модификаторы шаблонизатора Smarty

Разработка под LiveStreet CMS
В прошлой публикации мы коснулись общих основ для замечательного шаблонизатора smarty 3-й версии, который используется в текущей версии ливстрита. Цель данной статьи — рассказать что такое модификаторы в смарти и для чего они нужны.

Модификатор в понимании смарти — это специальный тег, который преобразует переменную или выражение в шаблоне к новому виду. У каждого модификатора есть свое предназначение.

Модификаторы переменных могут быть применены к переменным, пользовательским функциям или строкам. Для их применения надо после модифицируемого значения указать символ | (вертикальная черта) и название модификатора. Так же модификаторы могут принимать параметры, которые влияют на их поведение. Эти параметры следуют за названием модификатора и разделяются: (двоеточием). Кроме того, все функции PHP могут быть использованы в качестве модификаторов и модификаторы можно комбинировать.

Быстрые примеры:


{* применение модификатора к переменной *}
{$title|upper}

{* модификатор с параметрами *}
{$title|truncate:40:'...'}

{* применение модификатора к аргументу функции *}
{html_table loop=$myvar|upper}

{* с параметрами *}
{html_table loop=$myvar|truncate:40:'...'}

{* применение модификатора к строке *}
{'foobar'|upper}

{* использование date_format для форматирования текущей даты *}
{$smarty.now|date_format:"%Y/%m/%d"}

{* применение модификатора к функции *}
{mailto|upper address='smarty@example.com'}

{* использование функции PHP str_repeat *}
{'='|str_repeat:80}

{* функция PHP count *}
{$myArray|@count}

{* функция PHP shuffle, применяемая к IP адресу сервера *}
{$smarty.server.SERVER_ADDR|shuffle}

(* это приведет в верхний регистр букв и обрежет пробелы у всех элементов массива *}
<select name="name_id">
    {html_options output=$myArray|upper|truncate:20}
</select>


Если модификатор применяется к переменной-массиву, то он будет применен к каждому элементу массива. Если же требуется применить модификатор к массиву, как к переменной, то необходимо перед именем модификатора указать символ @:

{$aArticlesList|@count}


выведет количество элементов в массиве $aArticlesList используя стандартную функцию PHP count() в качестве модификатора.

Любая PHP-функция может быть использована в качестве модификатора. Тем не менее, использование PHP-функций в качестве модификаторов имеет две маленькие особенности:

  • Во-первых, иногда порядок аргументов функции не самый удобный. Форматирование $foo при помощи
    {"%2.f"|sprintf:$float}

    это рабочий, но не совсем удобный вариант. Больше подойдет
    {$float|string_format:"%2.f"}

    который предлагает дистрибутив Smarty.
  • Во-вторых, в случае включения безопасного режима, все PHP-функции, которые будут использованы как модификаторы, должны быть объявлены как безопасные в классе смарти.

В следующей статье рассмотрим каждый модификатор детальнее.
0 комментариев
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.