0

ポスト/プレフィルターをsmartyで使用する方法についてはかなり混乱しています。

私がする必要があるのは、ページが表示される前に、ページ内の特定の要素を検索して置き換えることです。$smarty->displayが呼び出される直前にこれを実行したいと思います。つまり、ディスクに保存される前ですが、コンパイルされた後(つまり、postfilter)です。

ポストフィルター関数の例:

function smarty_postfilter_replace($tpl_output, $search, $replace)
{
    return str_replace($search, $replace, $tpl_output);
}

スマート出力の直前にこれを適用するにはどうすればよいですか。Smartyのドキュメント(http://www.smarty.net/docsv2/de/advanced.features.postfilters.tpl)と他のいくつかの例を確認した後、試しましたが、どれも機能していないようです。

誰かがこれを行う方法と、パラメーターをフィルター($ search、$ replace)に渡す方法に関するサンプルコードを教えてもらえますか?

ありがとう

4

1 に答える 1

1

ポスト フィルターは、おそらく最も誤解されているフィルターです。pre-filter はコンパイルされていないテンプレート ソース コードで実行され、output-filter は評価された出力 (生成された HTML) で実行されますが、post-filter はコンパイラの一部として実行されます。コンパイラによって。誰がこれで何をするかわかりません。いずれにせよ、それはあなたが探しているものではありません。

output-filter を使用してコンテンツを置き換えます。キャッシュを使用している場合、非キャッシュ要素がなければ、キャッシュに書き込むにキャッシュが実行されます。キャッシュしない要素 ({nocache} や nocache フラグを持つ変数など) がある場合、出力フィルターはキャッシュが評価されたに実行されます (ほぼすべての要求で)。

于 2012-07-10T15:50:09.877 に答える