Smarty Icon

You may use the Smarty logo according to the trademark notice.

Smarty Template Engine Smarty Template Engine

For sponsorship, advertising, news or other inquiries, contact us at:

Sites Using Smarty

Advertisement

Chapter 16. プラグインによる Smarty の拡張

Smarty 2.0 から導入されたプラグインアーキテクチャにより、 Smarty のほとんど全ての機能がカスタマイズ可能になりました。 プラグインには次のものがあります。

  • テンプレート関数プラグイン
  • 修飾子プラグイン
  • ブロック関数プラグイン
  • コンパイラ関数プラグイン
  • プリフィルタプラグイン
  • ポストフィルタプラグイン
  • アウトプットフィルタプラグイン
  • リソースプラグイン
  • インサートプラグイン

リソースを除いて、register_* API によって関数を登録する古い方法の後方互換性はサポートされます。 API を使わずに、代わりに $custom_funcs, $custom_mods や その他のクラス変数を変更していたなら、 API を使用するか、行った拡張をプラグインに変換するようにスクリプトを調整する必要があります。

プラグインの動作原理

プラグインは要求があると常に読み込まれます。テンプレートから呼び出された 修飾子・関数・リソース等のプラグインだけが読み込まれます。 さらに各プラグインは同じリクエスト内に Smarty の異なるインスタンスが複数実行されていても、読み込まれるのは一度だけです。

プリフィルタ/ポストフィルタとアウトプットフィルタは少し特殊です。 これらはテンプレートから呼び出されないので、テンプレートが処理される前に API 関数を経由して明示的に登録または読み込まれる必要があります。 同じ種類の複数のフィルタが実行される順序は、それらが登録または読み込まれる順序によって決まります。

プラグインディレクトリ は、単一のパスを示す文字列または複数のパスを格納した配列でとなります。 プラグインのインストールは、単にプラグインファイルをいずれかのプラグインディレクトリ内に置くだけです。 そうすれば Smarty はそれを自動的に使用します。