smarty @Wiki

ポストフィルタプラグイン

最終更新:

匿名ユーザー

- view
だれでも歓迎! 編集

プリフィルタ/ポストフィルタプラグイン

プリフィルタ/ポストフィルタプラグインは概念において非常によく似ています。それらの違いは実行されるタイミングにあります。

string smarty_prefilter_name (string $source, object &$smarty)

プリフィルタは、テンプレートソースをコンパイルする直前に何らかの処理を行うために使用されます。プリフィルタ関数への第1パラメータはテンプレートソースであり、おそらくこれは他のプリフィルタによって既に修正されています。このプラグインは戻り値に、修正されたテンプレートソースを返すようにして下さい。また、このテンプレートソースはどこにも保存されず、コンパイルする目的だけに使用される事に注意して下さい。

string smarty_postfilter_name (string $compiled, object &$smarty)

ポストフィルタは、テンプレートのコンパイルが行われてファイルシステムに保存される前に、そのテンプレートの出力(phpスクリプト)に何らかの処理を行うために使用されます。ポストフィルタへの第1パラメータはコンパイルされたテンプレートソースであり、おそらくこれは他のポストフィルタによって既に修正されています。このプラグインは戻り値に、修正されたテンプレートソースを返すようにして下さい。

例 15-7. プリフィルタプラグイン

<?php
/*
* Smarty plugin
* -----
* File:     prefilter.pre01.php
* Type:     prefilter
* Name:     pre01
* Purpose:  htmlタグを小文字に変換する
* -----
*/
function smarty_prefilter_pre01($source, &$smarty)
{
    return preg_replace('!<(\w+)[^>]+>!e', 'strtolower("$1")', $source);
}
?>

例 15-8. postfilter plugin

<?php
/*
* Smarty plugin
* -----
* File:     postfilter.post01.php
* Type:     postfilter
* Name:     post01
* Purpose:  現在のテンプレートのすべての変数をリストするスクリプトを出力する
* -----
*/
function smarty_postfilter_post01($compiled, &$smarty)
{
  $compiled="<pre>\n<?php print_r(\$this->get_template_vars()); ?>\n</pre>" 
  . $compiled;
  return $compiled;
}
?>

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

記事メニュー
目安箱バナー