{insert}
{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} タグを呼び出す必要があります。
{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}
も参照してください。