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]); } ?>