What is Smarty?
Why use it?
Use Cases and Work Flow
Syntax Comparison
Template Inheritance
Best Practices
Crash Course
You may use the Smarty logo according to the trademark notice.
For sponsorship, advertising, news or other inquiries, contact us at:
テンプレートが
display()
又は
fetch()
を経由して呼び出された時、出力は1つ又は複数のアウトプットフィルタを通して送られます。
これは
ポストフィルタ
とは異なります。
コンパイルされたテンプレートがポストフィルタによって、
テンプレートがディスクに保存される前に処理されるのに対し、
アウトプットフィルタはテンプレートが実行される時にその出力を処理します。
アウトプットフィルタは、
登録する
か、あるいは load_filter()
関数や
$autoload_filters
変数によって
プラグインディレクトリ から読み込みます。
Smarty は内部でユーザ定義関数の第1パラメータにコンパイルされたテンプレートのソースコードを渡すので、
関数内で処理を行った後にその結果のソースコードを戻り値として返すようにします。
Example 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_outputfilter()
、
load_filter()
、
$autoload_filters
、
ポストフィルタ および
$plugins_dir
も参照してください。