テンプレート関数プラグイン
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}. |
例 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']); } ?>
|
|