プリフィルタ (拡張機能) - PHPプロ!マニュアル

Smartyマニュアル

拡張機能 - プリフィルタ

プリフィルタ

プリフィルタは、テンプレートがコンパイルされる前に 実行されるPHPユーザ定義関数です。テンプレートに含まれた不必要なコメントを除いたり、 第三者にテンプレートの更新を任せている時に テンプレート内にどのようなものが含まれているかを監視する等といった前処理を行います。

プリフィルタは、 登録する か、あるいは load_filter() 関数や $autoload_filters 変数によって プラグインディレクトリ から読み込みます。

Smartyは内部でユーザ定義関数の第1パラメータにテンプレートのソースコードを渡すので、 関数内で処理を行った後にその結果のソースコードを戻り値として返すようにします。

例 15-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');
?>

register_prefilter()ポストフィルタ および load_filter() も参照してください。

閲覧履歴



Pick Up Q&A

Q
ログファイルの中の空のデータ行を削除したい
 このエントリーをはてなブックマークに追加 
A
ログのデータ個数(列数)が固定で、空のログが"<><><>"だと既知であれば if ($line === "<><><>") { continue; } で読み飛ばしてもいいのでは? ...

>>続きを読む

まずは配列や文字列の扱いから、じっくり勉強して行きましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)