{capture}
属性名 | 型? | 必須 | デフォルト | 概要 |
name | string? | no | default | キャプチャされるブロックの名前 |
assign | string? | No | n/a | キャプチャされた出力を割り当てるための変数名 |
テンプレートの出力をブラウザに表示する代わりに変数に受け渡します。
{capture name="foo"} ... {/capture} 間のあらゆるコンテンツは、name属性で指定した変数に格納されます。
キャプチャされたコンテンツは特別な変数 $smarty.capture.foo ("foo"はname属性で指定した変数)によって利用できます。
name属性を指定しない場合は "default"が使われます。全ての{capture}は{/capture}とペアでなければなりません。この関数はネスト可能です。
{capture name="foo"} ... {/capture} 間のあらゆるコンテンツは、name属性で指定した変数に格納されます。
キャプチャされたコンテンツは特別な変数 $smarty.capture.foo ("foo"はname属性で指定した変数)によって利用できます。
name属性を指定しない場合は "default"が使われます。全ての{capture}は{/capture}とペアでなければなりません。この関数はネスト可能です。
テクニカルノート: Smarty 1.4.0 - 1.4.4では、変数$returnにキャプチャしたコンテンツが格納されていました。 Smarty 1.4.5からはname属性を使用する方法に変更されたので適宜にテンプレートを更新して下さい。
注意 insertの出力をキャプチャする場合には注意が必要です。キャッシュ機能が有効の時に、 キャッシュされたコンテンツ内に実行されるinsert命令があるなら、 そのコンテンツはキャプチャされません。
例 7-1. テンプレートのコンテンツをキャプチャする
{* コンテンツが表示されない限り、テーブルの行を出力しない *}
{capture name=banner}
{include file="get_banner.tpl"}
{/capture}
{if $smarty.capture.banner ne ""}<tr> <td> {$smarty.capture.banner} </td> </tr>{/if}