Skip to content

模板函数 {/programmers/plugins/plugins-functions/}

void

smarty_function_

name

array

\$params

object

\$template

所有从模板传递给模板函数的属性都包含在 $params 中,作为一个关联数组。

函数的输出(返回值)将替换模板中的函数标签,例如 {fetch} 函数。或者,函数可以简单地执行一些其他没有任何输出的任务,例如 {assign} 函数。

如果函数需要给模板分配一些变量或使用一些其他 Smarty 提供的功能,它可以使用提供的 $template 对象来做,例如 $template->foo()

<?php
/*
 * Smarty 插件
 * -------------------------------------------------------------
 * 文件:     function.eightball.php
 * 类型:     function
 * 名称:     eightball
 * 目的:     输出一个随机的魔法答案
 * -------------------------------------------------------------
 */
function smarty_function_eightball($params, Smarty_Internal_Template $template)
{
    $answers = array('是的',
                     '不是',
                     '绝不',
                     '前景不太好',
                     '稍后再问',
                     '也许在你的现实中');

    $result = array_rand($answers);
    return $answers[$result];
}
?>

在模板中可以这样使用:

问题: 我们会有时间旅行吗?
答案: {eightball}.



<?php
/*
 * Smarty 插件
 * -------------------------------------------------------------
 * 文件:     function.assign.php
 * 类型:     function
 * 名称:     assign
 * 目的:     将一个值分配给一个模板变量
 * -------------------------------------------------------------
 */
function smarty_function_assign($params, Smarty_Internal_Template $template)
{
    if (empty($params['var'])) {
        trigger_error("assign: 缺少 'var' 参数");
        return;
    }

    if (!in_array('value', array_keys($params))) {
        trigger_error("assign: 缺少 'value' 参数");
        return;
    }

    $template->assign($params['var'], $params['value']);

}
?>

参见: registerPlugin(), unregisterPlugin().