| 属性名 | 型 | 必須 | デフォルト | 概要 |
|---|---|---|---|---|
| name | string | Yes | n/a | 呼び出すinsert関数の名前(insert_name) |
| assign | string | No | n/a | 出力を格納するテンプレート変数名 |
| script | string | No | n/a | insert関数を呼び出す前にインクルードされるphpスクリプト名 |
| [var ...] | [var type] | No | n/a | insert関数に渡す変数 |
insertは、テンプレートのキャッシュが有効であってもinsertタグによる出力はキャッシュされないという点を除けば、includeタグと似た動作をします。それらはテンプレートが呼び出される度に実行されます。
例えば、ページの上部にバナーを表示するテンプレートを持っているとします。バナーにはHTML, images, flash等が混合して含まれます。したがってここに静的リンクを用いる事はできないので、バナーコンテンツをキャッシュの対象にしたくありません。そのためには、あらかじめ設定ファイルから取得した#banner_location_id#と#site_id#の値を渡し、バナーコンテンツを表示するためのinsertタグを呼び出す必要があります。
この例では、name属性に"getBanner"を指定し、パラメータに#banner_location_id#と#site_id#を渡しています。Smartyはphpアプリケーション内のinsert_getBanner()関数を探し、第1パラメータとして#banner_location_id#と#site_id#の値を格納した連想配列を渡します。アプリケー ションにおける全てのinsert関数の名前は、ネームスペースの衝突を避けるために"insert_"によって始まる必要があります。insert_getBanner()関数は、渡された値によって何らかの処理を行い、結果を返すべきです。この結果はテンプレートのinsertタグに置換されて表示されます。この例では、insert_getBanner(array("lid" => "12345","sid" => "67890")); という関数を呼び出して返された結果がinsertタグの位置に表示されます。
assign属性が与えられたなら、insertタグの出力はブラウザに表示される代わりにテンプレート変数に割り当てられます。(注: 出力をテンプレート変数に割り当てるのは、キャッシュが有効な状態ではあまり有益ではありません)
script属性が与えられたなら、このphpスクリプトはinsert関数が実行される前に一度だけインクルードされます。これはinsert関数がまだ存在しないかもしれない場合や、insert関数の動作のためにphpスクリプトを最初にインクルードする必要がある場合に指定します。パスには、$trusted_dirの相対パス、又は絶対パスを指定します。セキュリティが有効の時は、phpスクリプトは$trusted_dir内に置かれる必要があります。
Smartyオブジェクトは第2パラメータとして渡されます。これにより、insert関数からSmartyオブジェクトの情報の参照や修正が可能です。
テクニカルノート: テンプレートには、キャッシュの対象外となる部分を持たせる事が可能です。キャッシュが有効の場合でも、insertタグによる出力はキャッシュされずにそのページが呼び出される度に動的に実行されます。この動作は、バナー・投票・天気予報・検索結果・ユーザーフィードバックエリア等に向いています。