第7章 組み込み関数

目次

{$var=...}
{append}
{assign}
{block}
{call}
{capture}
{config_load}
{debug}
{extends}
{for}
{foreach},{foreachelse}
@index
@iteration
@first
@last
@show
@total
{break}
{continue}
{function}
{if},{elseif},{else}
{include}
{include_php}
{insert}
{ldelim},{rdelim}
{literal}
{nocache}
{php}
{section},{sectionelse}
.index
.index_prev
.index_next
.iteration
.first
.last
.rownum
.loop
.show
.total
{setfilter}
{strip}
{while}

Smarty にはいくつかの組み込み関数があります。 これらはテンプレートエンジンにとって必要不可欠なものです。 組み込み関数はコンパイル時に PHP のコードに展開され、 最大のパフォーマンスを発揮します。

これらと同じ名前の カスタム関数 を作成したり、組み込み関数を修正したりする事はできません。

これらの関数の一部は assign 属性を持っており、 結果を出力せずにここで指定した名前のテンプレート変数に格納します。これは {assign} 関数と似ています。

{$var=...}

これは {assign} 関数の短縮形です。 値を直接テンプレートに代入したり、配列の要素に代入したりできます。

注意

テンプレート内で変数に代入するというのは、 本質的にはアプリケーションのロジックをプレゼンテーションに持ち込んでいることになります。 これは本来 PHP 側でやったほうがうまく処理できることでしょう。 自己責任のもとで使いましょう。

次の属性をタグに追加することができます。

属性

属性名 短縮形 必須 デフォルト 概要
scope n/a string No n/a 代入する変数のスコープ。'parent'、'root' あるいは 'global'

オプションのフラグ

名前 概要
nocache 変数を 'nocache' 属性つきで代入する

例 7.1. シンプルな代入


{$name='Bob'}

The value of $name is {$name}.

  

上の例の出力は次のようになります。


The value of $name is Bob.

  

例 7.2. 計算結果の代入


{$running_total=$running_total+$some_array[row].some_value}

  

例 7.3. 配列要素の代入


{$user.name="Bob"}

  

例 7.4. 多次元配列の要素の代入


{$user.name.first="Bob"}

  

例 7.5. 配列要素の追加


{$users[]="Bob"}

  

例 7.6. 呼び出し元テンプレートのスコープでの代入

インクルードされたテンプレート内で代入した変数は、インクルードした側のテンプレートからも見えます。


{include file="sub_template.tpl"}
...
{* サブテンプレートで代入した変数を表示します *}
{$foo}<br>
...

  

上のテンプレートでインクルードしている sub_template.tpl の例を次に示します。


...
{* foo はインクルード元のテンプレートからも見えます *}
{$foo="something" scope=parent}
{* bar はこのテンプレート内でしか見えません *}
{$bar="value"}
...

{assign} および {append} も参照ください。