SEARCH

このマニュアルはSmartyのものです。セキュリティなどの問題でRCMSでは利用できないものもありますので、ご注意ください。
{if},{elseif},{else}

{if},{elseif},{else}

Smarty における {if} ステートメントは、PHP の if と同等の柔軟性を持っています。 さらに、テンプレートエンジンのための機能をいくつか追加しています。 全ての {if} は、対応する {/if} とペアである必要があります。{else}{elseif} も使用できます。 ||or&&andis_array() など、PHP の条件演算子や関数はすべて利用可能です。

$security が有効な場合は、 $security_settings の配列 IF_FUNCS に含まれる PHP の関数のみが利用可能となります。

以下は認識される条件演算子の一覧です。 これらはスペースによって周りの要素から分離される必要があります。 [] 内に記載された項目は任意である事に注意して下さい。 "PHP 相当" には、PHP において当てはまるものが示されます。

条件演算子代替構文例意味PHP 相当
==eq$a eq $b等しい==
!=ne, neq$a neq $b等しくない!=
>gt$a gt $bより大きい>
<lt$a lt $bより小さい<
>=gte, ge$a ge $b以上>=
<=lte, le$a le $b以下<=
=== $a === 0同一性のチェック===
!notnot $a否定 (単項)!
%mod$a mod $b剰余%
is [not] div by $a is not div by 4割り切れる$a % $b == 0
is [not] even $a is not even偶数である [ない] (単項)$a % 2 == 0
is [not] even by $a is not even by $b偶数番目のグループである [ない]($a / $b) % 2 == 0
is [not] odd $a is not odd奇数である [ない] (単項)$a % 2 != 0
is [not] odd by $a is not odd by $b奇数番目のグループである [ない]($a / $b) % 2 != 0

例 7-15. {if} ステートメント

{if $name eq 'Fred'}
    Welcome Sir.
{elseif $name eq 'Wilma'}
    Welcome Ma'am.
{else}
    Welcome, whatever you are.
{/if}

{* 論理演算子 "or" の例 *}
{if $name eq 'Fred' or $name eq 'Wilma'}
   ...
{/if}

{* 上と同じ *}
{if $name == 'Fred' || $name == 'Wilma'}
   ...
{/if}


{* 括弧は使用可能 *}
{if ( $amount < 0 or $amount > 1000 ) and $volume >= #minVolAmt#}
   ...
{/if}


{* PHP 関数を埋め込むことも可能 *}
{if count($var) gt 0}
   ...
{/if}

{* 配列のチェック *}
{if is_array($foo) }
   .....
{/if}

{* null でないことのチェック *}
{if isset($foo) }
   .....
{/if}


{* 値が偶数か奇数か *}
{if $var is even}
   ...
{/if}
{if $var is odd}
   ...
{/if}
{if $var is not odd}
   ...
{/if}


{* 値が 4 で割り切れるかどうか *}
{if $var is div by 4}
   ...
{/if}


{*
  ふたつずつグループ化したときに、値が even であるかどうか
  0=even, 1=even, 2=odd, 3=odd, 4=even, 5=even, etc.
*}
{if $var is even by 2}
   ...
{/if}

{* 0=even, 1=even, 2=even, 3=odd, 4=odd, 5=odd, etc. *}
{if $var is even by 3}
   ...
{/if}

例 7-16. {if} のその他の例

{if isset($name) && $name == 'Blog'}
     {* 何かを行います *}
{elseif $name == $foo}
    {* 何かを行います *}
{/if}

{if is_array($foo) && count($foo) > 0)
    {* foreach ループを実行します *}
{/if}

SEARCH