Table of Contents
Smarty にはいくつかの組み込み関数があります。 これらはテンプレートエンジンにとって必要不可欠なものです。これらと同じ名前の カスタム関数 を作成したり、組み込み関数を修正したりする事はできません。
これらの関数の一部は assign 属性を持っており、
結果を出力せずにここで指定した名前のテンプレート変数に格納します。これは
{assign} 関数と似ています。
{capture} は、タグの間のテンプレートの出力を集め、
それをブラウザに表示する代わりに変数に受け渡します。
{capture name='foo'} と {/capture}
の間のあらゆるコンテンツは、name
属性で指定した変数に格納されます。
キャプチャされたコンテンツは、特別な変数
$smarty.capture.foo
(“foo” は name 属性で指定した変数) によって利用できます。
name 属性を指定しない場合は “default”
が使われ、$smarty.capture.default
のようになります。
{capture}'s はネスト可能です。
| 属性名 | 型 | 必須 | デフォルト | 概要 |
|---|---|---|---|---|
| name | string | no | default | キャプチャされるブロックの名前 |
| assign | string | No | n/a | キャプチャされた出力を割り当てるための変数名 |
{insert}
の出力をキャプチャする際には注意が必要です。
$caching
が有効の時に、実行したい
{insert}
コマンドがもしキャッシュされたコンテンツ内にあるのなら、そのコンテンツはキャプチャされません。
Example 7.1. name 属性を使用した {capture}
{* コンテンツが表示されない限り、テーブルの行を表示しません *}
{capture name=banner}
{include file='get_banner.tpl'}
{/capture}
{if $smarty.capture.banner ne ''}
<div id="banner">{$smarty.capture.banner}</div>
{/if}
Example 7.2. {capture} をテンプレート変数に格納
この例は、
{popup}
関数の使用法を示すものです。
{capture name=some_content assign=popText}
The server is {$smarty.server.SERVER_NAME|upper} at {$smarty.server.SERVER_ADDR}<br>
Your ip is {$smarty.server.REMOTE_ADDR}.
{/capture}
<a href="#" {popup caption='Server Info' text=$popText}>help</a>
$smarty.capture、
{eval}、
{fetch}、
fetch()
および {assign}
も参照してください。