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