====== Пользовательские функции в языке шаблонов 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}
{counter}
{counter}
{counter}
==== 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} {$data[rows]} {/section} ==== eval ==== eval используется для обработки переменной, как шаблона. Можно использовать для таких вещей, как хранение шаблонных тэгов/переменных в переменной или в файлах конфигруации. Если указан специальный аттрибут "assign", то вывод тэга eval присваивается переменной, вместо отображения. Переменные шаблоны обрабатываются так же, как и обычные шаблоны. Они подвластны тем же правилам и ограничениям безопасности. Переменные шаблоны компилируются при каждом обращении! ^Имя аттрибута ^Тип ^Обязателен ^По умолчанию ^Описание ^ |var |mixed |Да |n/a |Переменная (или строка) для обработки | |assign |строка (string) |Нет |n/a |Имя переменной, которой будет присвоен вывод | ==== html_checkboxes ==== Пользовательская функция html_checkboxes генерирует группу HTML фложков по указанной информации. Также заботится об флажках, которые выбраны по умолчанию. параметры vslues и output обязательны, если не указан аттрибут options. Весь вывод совместим с XHTML. Все параметры, которые не указаны в списке выводятся в виде пар name/value в каждом созданном тэге . ^Имя аттрибута ^Тип ^Обязателен ^По умолчанию ^Описание ^ |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 , то группа опций заключится в тэг , иначе сгенерируется только группа опций. Все параметры, которые не указаны выше, выводятся в виде пары name/value внутри тэга {html_options options=$cust_options selected=$customer_id} ==== html_radios ==== Пользовательсякая функция html_radios генерирует HMTL код группы элементов выбора (radio button group). Автоматически устанавливает выбранное значение, если оно укзано. Требует наличия аттрибутов values и output или аттрибута options. Сгенерированный HMTL код совместим с XHTML. Все параметры, которые не указаны в таблице выше, передаются и выводятся внутри каждого созданного тэга . ^Имя аттрибута ^Тип ^Обязателен ^По умолчанию ^Описание ^ |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) |Нет |  |Значение остаточных ячеек на последней строке табилцы | {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:smarty6|Следующая глава]]