コンパイラ関数プラグイン
コンパイラ関数プラグインはテンプレートのコンパイル時にのみ呼び出されます。
これらのプラグインは、PHPコードまたは時間に依存する静的コンテンツをテンプレートに含める時に便利です。 コンパイラ関数と
カスタム関数
が双方とも同じ名前で登録された場合は、コンパイラ関数が優先されます。
mixed smarty_compiler_name (string $tag_arg, object
&$smarty)
コンパイラ関数には2つのパラメータを渡します。
これらのパラメータは、タグ内の文字列(基本的に関数名から終端デリミタまでの全ての文字列)と、
Smartyのオブジェクトです。戻り値には、コンパイルされたテンプレートに挿入されるPHPコードを返します。
例 16-6. シンプルなコンパイラ関数プラグイン
<?php /*
* Smarty plugin
* -------------------------------------------------------------
* File: compiler.tplheader.php
* Type: compiler
* Name: tplheader
* Purpose: ソースファイル名とそれがコンパイルされた時間を含む
* ヘッダを出力する
* -------------------------------------------------------------
*/ function smarty_compiler_tplheader($tag_arg, &$smarty)
{
return "\necho '" . $smarty->_current_file . " compiled at " . date('Y-m-d H:M'). "';";
} ?> |
この関数はテンプレートから次のように呼ばれます。
{* この関数はコンパイル時にのみ呼び出されます *}
{tplheader}
|
コンパイルされたテンプレートの結果として生じるPHPコードは次のようになります。
<?php echo 'index.tpl compiled at 2002-02-20 20:02'; ?> |
|
register_compiler_function() および
unregister_compiler_function() も参照してください。
再帰関数は最初の内は混乱しますが、非常に上手く使える場面もいずれ出てきます。これを機会に学んでいけるといいですね。