プリフィルタ
プリフィルタは、テンプレートがコンパイルされる前に実行されるphpユーザ定義関数です。テンプレートに含まれた不必要なコメントを除いたり、第三者にテンプレートの更新を任せている時にテンプレート内にどのようなものが含まれているかを監視する等といった前処理を行います。プリフィルタはregister_prefilterによって動的に登録されるか、load_filter()又は$autoload_filters変数によってプラグインディレクトリから読み込まれます。Smartyは内部でユーザ定義関数の第1パラメータにテンプレートのソースコードを渡すので、関数内で処理を行った後にその結果のソースコードを戻り値として返すようにします。
例 14-2. プリフィルタを使用する
<?php
// このユーザ定義関数をアプリケーションに加える
function remove_dw_comments($tpl_source, &$smarty)
{return preg_replace("/<!--#.*-->/U","",$tpl_source);}
// プリフィルタを登録する
$smarty->register_prefilter("remove_dw_comments");
$smarty->display("index.tpl");
?>
{* Smarty template index.tpl *}
<!--# この行はプリフィルタによって取り除かれる -->