テンプレート関数プラグイン
void smarty_function_name (array $params, object &$smarty)
テンプレートからテンプレート関数に渡された全ての属性は、連想配列として$paramsに格納されます。
関数の出力(戻り値)はテンプレート関数のタグの部分と置き換えられます(例:fetch()関数)。 あるいは何も出力せずに単に他のタスクを実行する事ができます(例: assign()関数)。
関数によっていくつかの変数をテンプレートに割り当てる必要がある、もしくはSmartyに提供された他の機能を使う必要がある場合は、提供された$smartyオブジェクトを使用する事ができます。
詳細は、 register_function(), unregister_function()を参照して下さい。
例 15-1. 出力ありのテンプレート関数プラグイン
<?php
/*Smarty plugin ----- File: function.eightball.php Type: function Name: eightball Purpose: ランダムに回答を出力する ----- */function smarty_function_eightball($params, &$smarty)
{$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}.
Answer: {eightball}.
例 15-2. 出力なしのテンプレート関数プラグイン
<?php
/*Smarty plugin ----- File: function.assign.php Type: function Name: assign Purpose: テンプート変数に値を割り当てる ----- */function smarty_function_assign($params, &$smarty)
{if (empty($params['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($params['var'], $params['value']);}
?>