模板函数 {/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']);
}
?>