第18章 プラグインによる Smarty の拡張

目次

プラグインの動作原理
命名規約
プラグインの記述
テンプレート関数プラグイン
修飾子プラグイン
ブロック関数プラグイン
コンパイラ関数プラグイン
プリフィルタ/ポストフィルタプラグイン
アウトプットフィルタプラグイン
リソースプラグイン
インサートプラグイン

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

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

プラグインの動作原理

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

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

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