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