Функции шаблона
void smarty_function_name
(array $params, object &$smarty)
Все атрибуты, передаваемые в функции шаблона из самого шаблона,
хранятся в $params в виде ассоциативного массива.
Получить доступ к его значениям можно напрямую:
$params['start'] или используя
extract($params) для импорта в таблицу.
Вывод (возвращаемое значение) функции будет подставлен в место расположения
тега функции в шаблоне (функция fetch() например).
В качестве альтернативы, функция может выполнять какие либо действия
без какого-либо вывода (assign() функция).
Если функция должна присвоить(assign) значения некоторым переменным в шаблоне или
использовать иные возможности Smarty, то можно работать с объектом
$smarty как обычно.
См. также:
register_function(),
unregister_function().
Пример 16-1. Функция-плагин с выводом
<?php /* * Smarty plugin * ------------------------------------------------------------- * File: function.eightball.php * Type: function * Name: eightball * Purpose: outputs a random magic answer * ------------------------------------------------------------- */ function smarty_function_eightball($params, &$smarty) { $answers = array('Да', 'Нет', 'Никоим образом', 'Перспектива так себе...', 'Спросите позже', 'Все может быть');
$result = array_rand($answers); return $answers[$result]; } ?>
|
|
которая может быть использована в шаблоне следующим образом:
Вопрос: Мы когда-нибудь найдем время для отпуска?
Ответ: {eightball}. |
Пример 16-2. Функция-плагин без вывода
<?php /* * Smarty plugin * ------------------------------------------------------------- * File: function.assign.php * Type: function * Name: assign * Purpose: assign a value to a template variable * ------------------------------------------------------------- */ function smarty_function_assign($params, &$smarty) { extract($params);
if (empty($var)) { $smarty->trigger_error("assign: missing 'var' parameter"); return; }
if (!in_array('value', array_keys($params))) { $smarty->trigger_error("assign: missing 'value' parameter"); return; }
$smarty->assign($var, $value); } ?>
|
|