{call} встроенная функция smarty

{call}
используется для вызова функции шаблона, определенной тегом {function}
, так же как и функция плагина.
Заметка
Шаблонные функции определены глобально. Поскольку компилятор Smarty является однопроходным компилятором, тег{call}
должен использоваться для вызова функции шаблона, определенной извне из данного шаблона. В противном случае вы можете напрямую использовать функцию как{funcname ...}
в шаблоне.
- Тег
{call}
должен иметьname
атрибут , который содержит имя функции шаблона. - Значения для переменных могут быть переданы в функцию шаблона в качестве атрибутов.
Атрибуты:
Имя атрибута | Тип | Обязательный | По умолчанию | Описание |
---|---|---|---|---|
name | string | да | n/a | Название шаблонной функции |
assign | string | нет | n/a | Имя переменной, которой будет присвоен выход вызываемой шаблонной функции |
[var ...] | [var type] | нет | n/a | Переменная для передачи локальной функции в шаблон |
Варианты флагов:
Имя | Описание |
---|---|
NoCache | Вызов функции шаблона в режиме nocache |
Пример. Вызов рекурсивного меню
{* определяем функцию *} {function name=menu level=0} <ul class="level{$level}"> {foreach $data as $entry} {if is_array($entry)} <li>{$entry@key}</li> {call name=menu data=$entry level=$level+1} {else} <li>{$entry}</li> {/if} {/foreach} </ul> {/function} {* создаем массив для демонстрации *} {$menu = ['item1','item2','item3' => ['item3-1','item3-2','item3-3' => ['item3-3-1','item3-3-2']],'item4']} {* запускаем массив через функцию *} {call name=menu data=$menu} {call menu data=$menu} {* краткая запись *}
Будет генерировать следующий вывод
* item1 * item2 * item3 o item3-1 o item3-2 o item3-3 + item3-3-1 + item3-3-2 * item4
Предыдущая Подстановка города и региона в корзинеСледующая Изменение GET параметров страницы без перезагрузки
Просмотры: 631