第 7章組み込み関数

目次
capture
config_load
foreach,foreachelse
include
include_php
insert
if,elseif,else
ldelim,rdelim
literal
php
section,sectionelse
strip

Smartyにはいくつかの組み込み関数があります。これはテンプレート言語には必須のものです。 これらと同じ名前のカスタム関数を定義する事や、組み込み関数を修正する事はできません。

capture

属性名必須デフォルト概要
namestringnodefaultキャプチャされるブロックの名前
assignstringNon/aキャプチャされた出力を割り当てるための変数名

テンプレートの出力をブラウザに表示する代わりに変数に受け渡します。{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}