SEARCH

このマニュアルはSmartyのものです。セキュリティなどの問題でRCMSでは利用できないものもありますので、ご注意ください。
アウトプットフィルタ

アウトプットフィルタ

テンプレートが display() 又は fetch() を経由して呼び出された時、出力は1つ又は複数のアウトプットフィルタを通して送られます。 これは ポストフィルタ とは異なります。 コンパイルされたテンプレートがポストフィルタによって、 テンプレートがディスクに保存される前に処理されるのに対し、 アウトプットフィルタはテンプレートが実行される時にその出力を処理します。

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

例 15-4. アウトプットフィルタを使用する

<?php
// このユーザ定義関数をアプリケーションに加えます
function protect_email($tpl_output, &$smarty)
{
    
$tpl_output =
       
preg_replace('!(\S+)@([a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,3}|[0-9]{1,3}))!',
                    
'$1%40$2'$tpl_output);
    return 
$tpl_output;
}

// アウトプットフィルタを登録します
$smarty->register_outputfilter('protect_email');
$smarty->display('index.tpl');

// これによりテンプレート出力に含まれるいくつかのemailアドレスは
// スパムボットからシンプルな保護を受けるでしょう
?>

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

SEARCH