コンパイラ関数プラグインはテンプレートのコンパイル時にのみ呼び出されます。 これらのプラグインは、PHPコードまたは時間に依存する静的コンテンツをテンプレートに含める時に便利です。 コンパイラ関数と カスタム関数 が双方とも同じ名前で登録された場合は、コンパイラ関数が優先されます。
mixed smarty_compiler_name( |
$tag_arg, | |
&$smarty) ; |
string $tag_arg
;object &$smarty
;コンパイラ関数には2つのパラメータを渡します。 これらのパラメータは、タグ内の文字列(基本的に関数名から終端デリミタまでの全ての文字列)と、 Smartyのオブジェクトです。戻り値には、コンパイルされたテンプレートに挿入されるPHPコードを返します。
Example 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()
も参照してください。