What is Smarty?
Why use it?
Use Cases and Work Flow
Syntax Comparison
Template Inheritance
Best Practices
Crash Course
You may use the Smarty logo according to the trademark notice.
For sponsorship, advertising, news or other inquiries, contact us at:
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}
も参照してください。