Get Smarty

Donate

Paypal

Smarty Icon

You may use the Smarty logo according to the trademark notice.

Smarty Template Engine Smarty Template Engine

For sponsorship, advertising, news or other inquiries, contact us at:

Sites Using Smarty

Advertisement

{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} タグを呼び出す必要があります。

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} タグの出力は ブラウザに表示される代わりにテンプレート変数に格納されます。

    Note

    出力をテンプレート変数に格納するのは、 キャッシュ が有効な状態ではあまり有益ではありません。

  • script 属性を与えると、この PHP スクリプトは {insert} 関数が実行される前に (一度だけ) インクルードされます。 これは、insert 関数がまだ存在しないかもしれない場合や、insert 関数の動作のために PHP スクリプトを最初にインクルードする必要がある場合に指定します。

    パスには、絶対パスかあるいは $trusted_dir からの相対パスを指定します。$security が有効な場合は、スクリプトは $trusted_dir 内にある必要があります。

Smarty オブジェクトは第2パラメータとして渡されます。 これにより、{insert} 関数から Smarty オブジェクトの情報の参照や修正が可能です。

テクニカルノート

テンプレートには、キャッシュの対象外となる部分を持たせる事が可能です。 キャッシュ が有効の場合でも、 {insert} タグによる出力はキャッシュされません。 そのページが呼び出される度に動的に実行されます。 この動作は、バナー・投票・天気予報・検索結果・ユーザーフィードバックエリア等に向いています。

{include} も参照してください。

Comments
No comments for this page.

Advertisement

Sponsors [info]

Sponsors