Функции шаблона

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, &amp;$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, &amp;$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);
}
?>


HIVE: All information for read only. Please respect copyright!
Hosted by hive йца: йХЕБЯЙЮЪ ЦНПНДЯЙЮЪ АХАКХНРЕЙЮ