Get Smarty

Donate

Paypal

Smarty Icon

You may use the Smarty logo according to the trademark notice.

Smarty Template Engine Smarty Template Engine

For sponsorship, advertising, news or other inquiries, contact us at:

Sites Using Smarty

Advertisement

{function}

{function} は、テンプレート内で関数を作成します。 これはプラグイン関数のようにコールすることができます。 見た目に関する内容を生成するプラグインを書くよりは、 それをテンプレート側に書いておいたほうが管理しやすくなるでしょう。 深く込み入ったメニューなどのデータの取り回しもシンプルになります。

Note

テンプレート関数はグローバルに定義されます。Smarty のコンパイラはシングルパスのコンパイラなので、 指定したテンプレートの外部で定義されたテンプレート関数をコールするときには {call} タグを使わなければなりません。それ以外の場合は、テンプレート内で直接 {funcname ...} として関数を使うことができます。

  • {function} タグには name 属性が必須です。 ここに、テンプレート関数の名前を書きます。 この名前のタグを使って、テンプレート関数をコールすることができます。

  • 属性 を使って、テンプレート関数に変数のデフォルト値を渡すことができます。 デフォルト値は、テンプレート関数をコールするときに上書きすることができます。

  • テンプレート関数からは、呼び出し元テンプレートのすべての変数を使うことができます。 テンプレート関数内での変数の値の変更や新たな変数の作成はローカルスコープで行われ、 テンプレート関数の実行後は呼び出し元テンプレートからは見えなくなります。

属性

属性名 必須 デフォルト 概要
name string Yes n/a テンプレート関数の名前
[var ...] [var type] No n/a ローカルからテンプレート関数に渡すデフォルトの変数の値

Example 7.41. 再帰的なメニュー {function} の例


{* 関数の定義 *}
{function name=menu level=0}
{function menu level=0}          {* 短縮形 *}
  <ul class="level{$level}">
  {foreach $data as $entry}
    {if is_array($entry)}
      <li>{$entry@key}</li>
      {menu data=$entry level=$level+1}
    {else}
      <li>{$entry}</li>
    {/if}
  {/foreach}
  </ul>
{/function}

{* 例として使う配列を作成します *}
{$menu = ['item1','item2','item3' => ['item3-1','item3-2','item3-3' =>
['item3-3-1','item3-3-2']],'item4']}

{* 配列を関数に渡します *}
{menu data=$menu}

  

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


* item1
* item2
* item3
      o item3-1
      o item3-2
      o item3-3
            + item3-3-1
            + item3-3-2
* item4

  

{call} も参照ください。

Comments
No comments for this page.

Advertisement

Sponsors [info]

Sponsors