ポストフィルタ

ポストフィルタは、テンプレートがコンパイルされた後に実行されるphpユーザ定義関数です。プリフィルタはregister_postfilterによって動的に登録されるか、load_filter()又は$autoload_filters変数によってプラグインディレクトリから読み込まれます。Smartyは内部でユーザ定義関数の第1パラメータにコンパイルされたテンプレートのソースコードを渡すので、関数内で処理を行った後にその結果のソースコードを戻り値として返すようにします。

例 14-3. ポストフィルタを使用する

<?php
// このユーザ定義関数をアプリケーションに加える
function add_header_comment($tpl_source, &$smarty)
{
    return
"<?php echo \"<!-- Created by Smarty! -->;\n\" ?>;\n".$tpl_source;
}

// ポストフィルタを登録する
$smarty->register_postfilter("add_header_comment");
$smarty->display("index.tpl");
?>

{* コンパイルされたテンプレート index.tpl *}
<!-- Created by Smarty! -->
{* 以下、残りのコンテンツ *}