void smarty_function_name( | 
$params, | |
$template); | 
array $params;object $template;
	模板传递到函数的参数变量,
	都包含在$params数组内。
    
	函数输出(返回值)的内容将替代函数标签调用的位置,
	如{fetch}函数。
	同时,函数也可以仅执行一些任务而没有输出,如
     {assign}函数。
    
	如果函数中对模板赋值,或使用其他Smarty提供的功能,
	可以通过 $template对象来进行,
	例如$template->foo()。
    
Example 18.1. 带输出的函数插件
<?php
/*
 * Smarty plugin
 * -------------------------------------------------------------
 * File:     function.eightball.php
 * Type:     function
 * Name:     eightball
 * Purpose:  输出一个随机的答案
 * -------------------------------------------------------------
 */
function smarty_function_eightball($params, Smarty_Internal_Template $template)
{
    $answers = array('Yes',
                     'No',
                     'No way',
                     'Outlook not so good',
                     'Ask again soon',
                     'Maybe in your reality');
    $result = array_rand($answers);
    return $answers[$result];
}
?>
    
模板中:
Question: Will we ever have time travel?
Answer: {eightball}.
    
Example 18.2. 不带输出的函数插件
<?php
/*
 * Smarty plugin
 * -------------------------------------------------------------
 * File:     function.assign.php
 * Type:     function
 * Name:     assign
 * Purpose:  赋值一个变量到模板
 * -------------------------------------------------------------
 */
function smarty_function_assign($params, Smarty_Internal_Template $template)
{
    if (empty($params['var'])) {
        trigger_error("assign: missing 'var' parameter");
        return;
    }
    if (!in_array('value', array_keys($params))) {
        trigger_error("assign: missing 'value' parameter");
        return;
    }
    $template->assign($params['var'], $params['value']);     
    
}
?>