smarty @Wiki

テンプレート関数プラグイン

最終更新:

匿名ユーザー

- view
だれでも歓迎! 編集

テンプレート関数プラグイン


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']);
}
?>
ウィキ募集バナー