smarty @Wiki

{insert}

最終更新:

匿名ユーザー

- view
だれでも歓迎! 編集

{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関数に渡す変数

insertは、テンプレートのキャッシュが有効であってもinsertタグによる出力はキャッシュされないという点を除けば、includeタグと似た動作をします。それらはテンプレートが呼び出される度に実行されます。

例えば、ページの上部にバナーを表示するテンプレートを持っているとします。
バナーにはHTML, images, flash等が混合して含まれます。したがってここに静的リンクを用いる事はできないので、バナーコンテンツをキャッシュの対象にしたくありません。そのためには、あらかじめ設定ファイルから取得した#banner_location_id#と#site_id#の値を渡し、バナーコンテンツを表示するためのinsertタグを呼び出す必要があります。

例 7-10. 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タグに置換されて表示されます。
この例では、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タグによる出力はキャッシュされずにそのページが呼び出される度に動的に実行されます。この動作は、バナー・投票・天気予報・検索結果・ユーザーフィードバックエリア等に向いています。

ウィキ募集バナー