Модификаторы переменных в языке шаблонов Smarty

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

{* Выводим заголовок большими буквами *}
<h2>{$title|upper}</h2>
 
{* Ограничим $topic 40-а символами и добавим "..." в конце *}
Topic: {$topic|truncate:40:"..."}
 
{* форматируем строку *}
{"now"|date_format:"%Y/%m/%d"}
 
{* Применение модификатора к функции *}
{mailto|upper address="me@domain.dom"}

Если модификатор применяется к переменной-массиву, то он будет применен к каждому элементу массива. Если же требуется применить модификатор к массиву, как к переменной, то необходимо перед именем модификатора указать символ @. Пример: {$articleTitle|@count} выведет количество елементов в массиве $articleTitle.

bbcode

Преобразует bb-теги в тексте в html форматирование.

{$commentText|bbcode}

capitalize

Первые буквы каждого слова преобразуются в заглавные.

{$articleTitle}
{$articleTitle|capitalize}

count_characters

Возвращает количество символов в строке.

{$articleTitle}
{$articleTitle|count_characters}

cat

Данная строка добавляется к модифицируемому значению.

{$articleTitle|cat:" yesterday."}

count_paragraphs

Возвращает количество абзацев в строке.

count_sentences

Возвращает количество предложений.

count_words

Возвращает количество слов.

date_format

Формирует дату и время по заданному формату strftime(). Даты могут быть в виде unix timestamps, mysql timestamps или в любом другом виде, который поймет strtotime(). Проектировщики шаблонов могут использовать date_format для контроля над форматом выводимых дат. Если дата, переданная модификатору, пуста, то второй параметр используется как дата.

Позиция параметра Тип Обязателен По умолчанию Описание
1 строка (string) Нет %d.%m.%Y Формат вывода даты.
2 строка (string) Нет n/a Если модифицируемое значение пусто, то используется это.
{$smarty.now|date_format} {* текущая дата. *}
{$smarty.now|date_format:"%D %T"} {* дата и время. *}
%a - сокращенное название дня недели, в зависимости от текущей локали
%A - полное название дня недели, в зависимости от текущей локали
%b - сокращенное нащвание месяца, в зависимости от текущей локали
%B - полное название месяца, в зависимости от текущей локали
%c - формат даты и времени по умолчанию для текущей локали
%C - номер века (год, деленный на 100, представленный в виде целого в промежутке от 00 до 99) 
%d - день месяца в десятичном формате (от 00 до 31) 
%D - синоним %m/%d/%y 
%e - день месяца в десятичном формате без ведущего нуля (от 1 до 31) 
%g - Week-based year within century [00,99]
%G - Week-based year, including the century [0000,9999]
%h - синоним %b 
%H - часы по 24-часовым часам (от 00 до 23) 
%I - часы по 12-часовым часам (от 01 до 12) 
%j - день года (от 001 до 366) 
%k - часы по 24-часовым часам без ведущего нуля (от 0 до 23)
%l - часы по 12-часовым часам без ведущего нуля (от 1 до 12)
%m - номер месяца (от 01 до 12) 
%M - минуты
%n - символ новой строки
%p - `am' или `pm', в зависимости от заданного формата времени и текущей локали.
%r - time in a.m. and p.m. notation 
%R - time in 24 hour notation 
%S - секунды
%t - символ табуляции
%T - время в формате %H:%M:%S 
%u - номер дня недели [1,7], где 1-ый день - понедельник
%U - номер недели в году, считая первое воскресенья года первым днем первой недели 
%V - номер недели в году (по ISO 8601:1988) в диапазоне от 01 до 53, где первая неделя та, у которой хотя бы 4 дня находятся в данном году. Понедельник считается первым днем недели. 
%w - номер дня недели, где 0 - воскресенье
%W - номер недели в году, считаю первый понедельник первым днем первой недели.

default

Используется для установки значения по умолчанию для переменной. Если переменная оказывается пустой, то выводится значение по умолчанию. Модификатор принимает один параметр.

{$articleTitle|default:"no title"}
{$myTitle|default:"no title"}

escape

«Защищает» специальные символы в переменной. Используется для защиты специальных символов html, защиты специальных символов url, защиты одиночных кавычек, конвертации в шестандцатеричный вид (hex), конвертации каждого символа в шестандцатеричное html представление (hexentity), защита специальных символов javascript.

Позиция параметра Тип Обязателен Возможные значения По умолчанию Описание
1 строка (string) Нет html, htmlall, url, quotes, hex, hexentity, javascript html Формат защиты (escape).
{$articleTitle}
{$articleTitle|escape}
{$articleTitle|escape:"html"}    {* защищает  & " ' < > *}
{$articleTitle|escape:"htmlall"} {* защищает все ВСЕ html объекты *}
{$articleTitle|escape:"url"}
{$articleTitle|escape:"quotes"}
<a href="mailto:{$EmailAddress|escape:"hex"}">{$EmailAddress|escape:"hexentity"}</a>

indent

Вставляет в начало каждой строки заданное количество заданных символов. По умолчанию вставляется 4 пробела.

Позиция параметра Тип Обязателен По умолчанию Описание
1 целое (integer) Нет 4 Количество символов для вставки.
2 строка (string) Нет (один пробел) Символ для вставки.

lower

Все буквы в переменной становятся маленькими.

nl2br

Заменяет все переносы строк на тэг <br /> в заданной переменной. Это эквивалент PHP функции nl2br().

number

Добавляет пробел между разрядами крупных чисел. Например 65000 приводится к виду 65 000.

regex_replace

Выполняется поиск и замена по регулярному выражению в переменной. Используется синтаксис для функции preg_replace() из руководства по PHP.

Позиция параметра Тип Обязателен По умолчанию Описание
1 строка (string) Да n/a Регулярное выражение для замены.
2 строка (string) Да n/a Строка для замены.

replace

Выполняется простой поиск и замена строки.

Позиция параметра Тип Обязателен По умолчанию Описание
1 строка (string) Да n/a Строка для поиска.
2 строка (string) Да n/a Строка для замены.
{$articleTitle}
{$articleTitle|replace:"Garden":"Vineyard"}
{$articleTitle|replace:" ":"   "}

spacify

Spacify позволяет вставить пробел между каждым символом переменной. Можно также указать другой символ (или строку) для вставки

string_format

Форматирует строку по указанному формату. Используется синтаксис форматирования PHP функции sprintf.

{$number}
{$number|string_format:"%.2f"}
{$number|string_format:"%d"}

strip

Заменяет все повторные пробелы, новые строки и знаки табуляции на одиночный пробел или на заданную строку.

Если вы хотите сделать аналогичную операцию над частью текста шаблона, то используйте функцию strip.

strip_tags

Вырезает HTML теги, обычно все между < и >.

truncate

Обрезает переменную по указанной длине (по умолчанию 80). Вторым параметром можно указать текст, который будет добавлен в конец обрезанной строки. По умолчанию truncate будет пытаться вырезать слово, которой лежит на вырезаемой границе, целиком. Можно указать третий параметр true, если надо обрезать строку точно по определенному символу.

Позиция параметра Тип Обязателен По умолчанию Описание
1 целое (integer) Нет 80 Количество символов для обрезания.
2 строка (string) Нет Текст, который добавляется, если произошло обрезание.
3 логический (boolean) Нет false Указывает, надо ли обрезать по границе слова (false) или по символу (true).
{$articleTitle}
{$articleTitle|truncate}
{$articleTitle|truncate:30}
{$articleTitle|truncate:30:""}
{$articleTitle|truncate:30:"---"}
{$articleTitle|truncate:30:"":true}
{$articleTitle|truncate:30:"...":true}

upper

Заменяет все маленькие буквы на большие.

wordwrap

Переносит строку по количеству столбцов (по умолчанию 80). Можно указать строку, которая будет вставлятся на месте переноса (по умолчанию символ новой строки). По умолчанию wordwrap пытается переносить по словам, но если указать третим параметром true, то переноситься будет по конкретному символу.

Позиция параметра Тип Обязателен По умолчанию Описание
1 целое (integer) Нет 80 Количество столбцов для переноса.
2 строка (string) Нет \n Строка, которая вставляется на месте переноса.
3 логический (boolean) Нет false Указывает, переносить по солвам (false) или нет (true).
{$articleTitle}
{$articleTitle|wordwrap:30}
{$articleTitle|wordwrap:20}
{$articleTitle|wordwrap:30:"<br>\n"}
{$articleTitle|wordwrap:30:"\n":true}

Комбинирование модификаторов

Можно применять любой количество модификаторов к переменной. Они будут применять в порядке их упоминания слева направо. Модификаторы должны быть разделены символом | (вертикальная черта).

{$articleTitle}
{$articleTitle|upper|spacify}
{$articleTitle|lower|spacify|truncate}
{$articleTitle|lower|truncate:30|spacify}
{$articleTitle|lower|spacify|truncate:30:". . ."}

Следующая глава

 
smarty/smarty3.txt · Последние изменения: 01.10.2016 23:27 (внешнее изменение)