Smarty マニュアル

前のページ

第 7章組み込み関数

次のページ

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

ページ上段