Пользовательские функции в языке шаблонов Smarty

Smarty содержит несколько пользовательский функциий, которые вы можете использовать в шаблонах.

assign

assign используется для установки значения переменной в процессе выполнения шаблона.

Имя аттрибута Тип Обязателен По умолчанию Описание
var строка (string) Да n/a Имя переменной, значение которой будет устанавливаться
value строка (string) Да n/a Устанавливаемое значение

counter

counter используется для управления счетчиком. counter запоминает количество итераций. Можно регулировать начало, интервал и направление отсчета, а также указать, выводить ил значение счетчика или нет. Можно запустить несколько счетчиков одновременно, указав уникальное имя для каждого. Если имя счетчика не указано, будет использовано по умолчанию 'default'. Если указан аттрибут «assign», то вывод тэга counter будет присвоен переменной шаблона, вместо отображения.

Имя аттрибута Тип Обязателен По умолчанию Описание
name строка (string) Нет default Имя счетчика
start number Нет 1 Начальное значение счетчика
skip number Нет 1 Шаг счетчика
direction строка (string) Нет up Направление (вверх - up/вниз - down)
print логический (boolean) Нет true Выводить значение счетчика или нет
assign строка (string) Нет n/a Имя переменной, которой будет присвоен вывод
{* инициализируем счетчик *}
{counter start=0 skip=2 print=false}
 
{counter}<br>
{counter}<br>
{counter}<br>
{counter}<br>

cycle

Cycle используется для прохода через множество значений. С его помощью можно легко реализовать переключение между двумя и более цветами в таблице, или пройти цикл через массив. Можно проходить через несколько множеств значений одновременно, указав аттрибут name. Имена должны быть уникальными. Можно не отображать данный элемент, установив аттрибут print в ложь (false). Удобно для пропуска значения, без его вывода. Аттрибут advance используется для повтора значения. Если установлен в истина (true), то при следующем вызове cycle будет выведено то же значение. Если указан специальный аттрибут «assign», то вывод cycle присваивается переменной, вместо отображения.

Имя аттрибута Тип Обязателен По умолчанию Описание
name строка (string) Нет default Название цикла
values mixed Да N/A Значения, по которым будет производиться цикл. Либо список, разделеный запятыми (либо другим указанным разделителем), либо массив значений.
print логический (boolean) Нет true Выводить значение, или нет
advance логический (boolean) Нет true Переключаться или нет на следующее значение
delimiter строка (string) Нет , Разделитель, используемый в аттрибуте values.
assign строка (string) Нет n/a Имя переменной, которой будет присвоен вывод тэга
{section name=rows loop=$data}
<tr bgcolor="{cycle values="#eeeeee,#d0d0d0"}">
   <td>{$data[rows]}</td>
</tr>
{/section}

eval

eval используется для обработки переменной, как шаблона. Можно использовать для таких вещей, как хранение шаблонных тэгов/переменных в переменной или в файлах конфигруации. Если указан специальный аттрибут «assign», то вывод тэга eval присваивается переменной, вместо отображения.

Переменные шаблоны обрабатываются так же, как и обычные шаблоны. Они подвластны тем же правилам и ограничениям безопасности. Переменные шаблоны компилируются при каждом обращении!

Имя аттрибута Тип Обязателен По умолчанию Описание
var mixed Да n/a Переменная (или строка) для обработки
assign строка (string) Нет n/a Имя переменной, которой будет присвоен вывод

html_checkboxes

Пользовательская функция html_checkboxes генерирует группу HTML фложков по указанной информации. Также заботится об флажках, которые выбраны по умолчанию. параметры vslues и output обязательны, если не указан аттрибут options. Весь вывод совместим с XHTML. Все параметры, которые не указаны в списке выводятся в виде пар name/value в каждом созданном тэге <input>.

Имя аттрибута Тип Обязателен По умолчанию Описание
name строка (string) Нет checkbox Название списка флажков
values массив Да, если не указан аттрибут options n/a Массив значений для флажков
output массив Да, если не указан аттрибут options n/a Массив названий флажков
checked строка (string) Нет пусто Выбранный флажок
options ассоциативный массив Да, если не указаны аттрибуты values и output n/a Ассоциативнй массив значений и названий
separator строка (string) Нет пусто Строка разделяющая каждый флажок

html_options

Пользовательская функция html_options генерирует группу html тэгов option по указанной информации. Также заботится о выбранных по умолчанию элементах. Аттрибуты values и output обязательны, если не указан аттрибут options. Если данное значение - массив, то оно будет представлено в виде html OPTGROUP. Рекурсия с OPTGROUP поддерживается. Весь вывод совместим с XHTML. Если указан необязательный аттрибут name , то группа опций заключится в тэг <select name=«groupname»> и </select>, иначе сгенерируется только группа опций. Все параметры, которые не указаны выше, выводятся в виде пары name/value внутри тэга <select>-tag. Они игнорируются, если аттрибут name не указан.

Имя аттрибута Тип Обязателен По умолчанию Описание
values массив Да, если не указан аттрибут options n/a Массив значений для выпадающего списка
output массив Да, если не указан аттрибут options n/a Массив названий для выпадающего списка
selected string/array Нет пусто Выбранный элемент(ы)
options ассоциативный массив Да, если не указаны аттрибуты values и output n/a Ассоциативный массив значений и названий
name строка (string) Нет пусто Название выпадающего списка
<select name=customer_id>
  {html_options options=$cust_options selected=$customer_id}
 </select>

html_radios

Пользовательсякая функция html_radios генерирует HMTL код группы элементов выбора (radio button group). Автоматически устанавливает выбранное значение, если оно укзано. Требует наличия аттрибутов values и output или аттрибута options. Сгенерированный HMTL код совместим с XHTML. Все параметры, которые не указаны в таблице выше, передаются и выводятся внутри каждого созданного тэга <input>.

Имя аттрибута Тип Обязателен По умолчанию Описание
name строка (string) Нет radio Название элементов выбора
values массив Да, если не указан аттрибут options n/a Массив значений элементов выбора
output массив Да, если не указан аттрибут options n/a Массив названий элементов выбора
checked строка (string) Нет пусто Значение выбранного элемента
options ассоциативный массив Да, если не указаны аттрибуты values и output n/a Ассоциативный массив значений и названий элементов выбора
separator строка (string) Нет пусто Текст, разделяющий элементы выбора

html_select_date

Пользовательская функция html_select_date генерирует поля выбора даты.

Имя аттрибута Тип Обязателен По умолчанию Описание
prefix строка (string) Нет Date_ Префикс названий переменных
time timestamp/ГГГГ-ММ-ДД Нет Текущее время в формате unix timestamp или ГГГГ-ММ-ДД Используемое время
start_year строка (string) Нет Текущий год Начальный год в выпадающем спииске. Либо указывается явно, либо относительно текущего года (+/- N)
end_year строка (string) Нет Аналогично start_year Конечный год в вырадающем списке. Либо указывается явно, либо относительно текущего года (+/- N)
display_days логический (boolean) Нет true Выводить ли список дней
display_months логический (boolean) Нет true Выводить ли список месяцев
display_years логический (boolean) Нет true Выводить ли список лет
month_format строка (string) Нет %B Формат названия месяцев (strftime)
day_format строка (string) Нет %02d формат названия дней (sprintf)
day_value_format строка (string) Нет %d Формат значения дней (sprintf)
year_as_text логический (boolean) Нет false Выводить ли значение года текстом
reverse_years логический (boolean) Нет false Выводить года в обратном порядке
field_array строка (string) Нет null Название переменной (name), которая будет содержать выбранные значения в виде массива: name[Day], name[Year], name[Month].
day_size строка (string) Нет null Устанавливает аттрибут size тэга select для дней
month_size строка (string) Нет null Устанавливает аттрибут size тэга select для месяцев
year_size строка (string) Нет null Устанавливает аттрибут size тэга select для лет
all_extra строка (string) Нет null Устанавливает дополнительные аттрибуты для всех тэгов select/input
day_extra строка (string) Нет null Устанавливает дополнительные аттрибуты тэгов select/input для дней
month_extra строка (string) Нет null Устанавливает дополнительные аттрибуты тэгов select/input для месяцев
year_extra строка (string) Нет null Устанавливает дополнительные аттрибуты тэгов select/input для лет
field_order строка (string) Нет MDY Порядок следования полей (МДГ)
field_separator строка (string) Нет \n Текст, раздляющий поля
month_value_format строка (string) Нет %m Формат значения месяца (strftime). По умолчанию - %m (номер месяца).

html_select_time

Пользовательская функция html_select_time генерирует HTML поля выбора времени.

Имя аттрибута Тип Обязателен По умолчанию Описание
prefix строка (string) Нет Time_ Префикс названий переменных
time timestamp Нет Текущее время Используемое время
display_hours логический (boolean) Нет true Выводить часы
display_minutes логический (boolean) Нет true Выводить минуты
display_seconds логический (boolean) Нет true Выводить секунды
display_meridian логический (boolean) Нет true Выводить меридиан (am/pm)
use_24_hours логический (boolean) Нет true Использовать 24-часовой формат времени
minute_interval целое (integer) Нет 1 Интервал элементов выпадающего списка минут
second_interval целое (integer) Нет 1 Интервал элементов выпадающего списка секунд
field_array строка (string) Нет n/a Название переменной, в которую передадутся выбранные значения в виде массива.
all_extra строка (string) Нет null Указывает дополнительные аттрибуты для всех тэгов select/input
hour_extra строка (string) Нет null Указывает дополнительные аттрибуты для тэгов select/input для выбора часов
minute_extra строка (string) Нет null Указывает дополнительные аттрибуты для тэгов select/input для выбора минут
second_extra строка (string) Нет null Указывает дополнительные аттрибуты для тэгов select/input для выбора секунд
meridian_extra строка (string) Нет null Указывает дополнительные аттрибуты для тэгов select/input для выбора меридиан

html_table

Пользовательская функция html_table выводит массив в виде HTML таблицы. Аттрибут cols указывает количество колонок. Аттрибуты table_attr , tr_attr и td_attr указывают дополнительные аттрибуты тэго table, tr и td. Если значение tr_attr или td_attr - массив, то кго значения циклический повторяются. Атрибут trailpad устанавливает значения для остаточных ячеек на последней строке таблицы.

Имя аттрибута Тип Обязателен По умолчанию Описание
loop массив Да n/a Массив данных, по которому будет произведен обход
cols целое (integer) Нет 3 Количество колонок таблицы
table_attr строка (string) Нет border=«1» Дополнительные аттрибуты тэга table
tr_attr строка (string) Нет пусто Дополнительные аттрибуты тэга tr (если указан массив, то его элементы циклически повторяются)
td_attr строка (string) Нет пусто дополнительные аттрибуты тэга td (если указан массив, то его элементы циклически повторяются)
trailpad строка (string) Нет &nbsp; Значение остаточных ячеек на последней строке табилцы
{html_table loop=$data}
{html_table loop=$data cols=4 table_attr='border="0"'}
{html_table loop=$data cols=4 tr_attr=$tr}

math

Пользовательская функция math позволяет дизайнерам шаблонов вычислять математические выражения в шаблоне. Любая численная переменная шаблона может быть использована в выражении. Переменные, используемые в выражении, передаються в качестве параметров, которые могут быть как и переменные шаблона, так и статические щначения. Допустимые операторы: +, -, /, *, abs, ceil, cos, exp, floor, log, log10, max, min, pi, pow, rand, round, sin, sqrt, srans и tan. Ознакомтесь с php документацией под данным функциям. Если указан аттрибут «assign», то вывод будет присвоен переменной, вместо отображения.

Имя аттрибута Тип Обязателен По умолчанию Описание
equation строка (string) Да n/a Математической выражение
format строка (string) Нет n/a формат рузультата (sprintf)
var numeric Да n/a Переменная выражения
assign строка (string) Нет n/a Переменная шаблона, которой будет присвоен вывод
[var …] numeric Да n/a Дополнительные переменные выражения
{* $height=4, $width=5 *}
{math equation="x + y" x=$height y=$width}

mailto

Пользовательская функция mailto автоматизирует создание ссылок на e-mail адреса с возможностью кодирования их. Кодирование усложняет работу web-пауков, которые собирают e-mail адреса с вашего сайта.

Имя аттрибута Тип Обязателен По умолчанию Описание
address строка (string) Да n/a Адрес e-mail
text строка (string) Нет n/a Название ссылки. По умолчанию: адрес e-mail
encode строка (string) Нет none Способ кодирования e-mail. Может быть одним из none, hex или javascript.
cc строка (string) Нет n/a Адреса e-mail для точной копии. Адреса разделяются запятыми.
bcc строка (string) Нет n/a Адреса e-mail для «слепой» копии. Адреса разделяются запятыми.
subject строка (string) Нет n/a Тема письма.
newsgroups строка (string) Нет n/a В какие конференции передовать. конференции разделяются запятыми.
extra строка (string) Нет n/a Дополнительный аттрибуты, передаваемые в ссылку такие как стили (style)
{mailto address="me@domain.com"}
{mailto address="me@domain.com" text="send me some mail"}
{mailto address="me@domain.com" encode="javascript"}
{mailto address="me@domain.com" encode="hex"}
{mailto address="me@domain.com" subject="Hello to you!"}
{mailto address="me@domain.com" cc="you@domain.com,they@domain.com"}
{mailto address="me@domain.com" extra='class="email"'}

textformat

Функция textformat используеться для форматирования текст, заключенного внтури ее. В основном убирает лишние пробелы и специальные символы, а так же форматирует абзацы, делает отступы, переносит слова.

Имя аттрибута Тип Обязателен По умолчанию Описание
style строка (string) Нет n/a Предустановленный стиль
indent number Нет 0 Отступ строки
indent_first number Нет 0 Отступ первой строки
indent_char строка (string) Нет (single space) Символ, которым заполняеться отступ строк.
wrap number Нет 80 Количество символов в строке.
wrap_char строка (string) Нет \n Текст, разделяющий каждую строку.
wrap_cut логический (boolean) Нет false Переносить текст по символам (то есть точно по указанной длине строки) (true), или по границам слов (false)
assign строка (string) Нет n/a Переменная шаблона, которой будет присвоен вывод.
{textformat wrap=40 indent=4 indent_first=4}
 
This is foo.
This is foo.
This is foo.
This is foo.
This is foo.
This is foo.
 
This is bar.
 
bar foo bar foo     foo.
bar foo bar foo     foo.
bar foo bar foo     foo.
bar foo bar foo     foo.
bar foo bar foo     foo.
bar foo bar foo     foo.
bar foo bar foo     foo.
 
{/textformat}

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

 
smarty/smarty5.txt · Последние изменения: 29.12.2014 11:16 (внешнее изменение)