{capture}
は、タグの間のテンプレートの出力を集め、
それをブラウザに表示する代わりに変数に受け渡します。
{capture name='foo'}
と {/capture}
の間のあらゆるコンテンツは、name
属性で指定した変数に格納されます。
キャプチャされたコンテンツは、特別な変数
$smarty.capture.foo
(“foo” は name
属性で指定した変数) によって利用できます。
name
属性を指定しない場合は “default”
が使われ、$smarty.capture.default
のようになります。
{capture}'s
はネスト可能です。
属性
属性名 | 型 | 必須 | デフォルト | 概要 |
---|---|---|---|---|
name | string | Yes | n/a | キャプチャされるブロックの名前 |
assign | string | No | n/a | キャプチャされた出力を割り当てるための変数名 |
append | string | No | n/a | キャプチャされた出力を追記するための配列変数名 |
オプションのフラグ
名前 | 概要 |
---|---|
nocache | キャプチャされたブロックのキャッシュを無効にする |
注意
{insert}
の出力をキャプチャする際には注意が必要です。
$caching
が有効の時に、実行したい
{insert}
コマンドがもしキャッシュされたコンテンツ内にあるのなら、そのコンテンツはキャプチャされません。
Example 7.21. name 属性を使用した {capture}
{* コンテンツが表示されない限り、テーブルの行を表示しません *} {capture name="banner"} {capture "banner"} {* short-hand *} {include file="get_banner.tpl"} {/capture} {if $smarty.capture.banner ne ""} <div id="banner">{$smarty.capture.banner}</div> {/if}
Example 7.22. {capture} をテンプレート変数に格納
この例は、キャプチャ関数の使用法を示すものです。
{capture name=some_content assign=popText} {capture some_content assign=popText} {* short-hand *} The server is {$my_server_name|upper} at {$my_server_addr}<br> Your ip is {$my_ip}. {/capture} <a href="#">{$popText}</a>
Example 7.23. {capture} をテンプレート配列変数に格納
この例は、キャプチャを複数回行って、その結果を配列に格納する方法を示すものです。
{capture append="foo"}hello{/capture}I say just {capture append="foo"}world{/capture} {foreach $foo as $text}{$text} {/foreach}
上の例の出力は次のようになります。
I say just hello world
$smarty.capture
、
{eval}
、
{fetch}
、
fetch()
および {assign}
も参照ください。