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

{$title|upper}

{* Ограничим $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"} {$EmailAddress|escape:"hexentity"} ==== indent ==== Вставляет в начало каждой строки заданное количество заданных символов. По умолчанию вставляется 4 пробела. ^ Позиция параметра ^ Тип ^ Обязателен ^ По умолчанию ^ Описание ^ | 1 | целое (integer) | Нет | 4 | Количество символов для вставки. | | 2 | строка (string) | Нет | (один пробел) | Символ для вставки. | ==== lower ==== Все буквы в переменной становятся маленькими. ==== nl2br ==== Заменяет все переносы строк на тэг
в заданной переменной. Это эквивалент 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 ==== Заменяет все повторные пробелы, новые строки и знаки табуляции на одиночный пробел или на заданную строку. Если вы хотите сделать аналогичную операцию над частью текста шаблона, то используйте [[smarty:smarty4#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:"
\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:smarty4|Следующая глава]]