if,elseif,else

テンプレートエンジンの特徴の一つとして、Smartyにおいての {if} ステートメントは php のそれとほぼ同様の柔軟性を持っています。全てのif/ifはペアである必要があります。また、elseelseifも使用できます。|| , or , && , and といった全ての 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より小さい又は同等<=
!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-11. 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 $name=="Fred" || $name=="Wilma"}
	...
{/if}


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

{* php関数を埋め込む事が可能 *}
{if count($var) gt 0}
	...
{/if}

{* 値が偶数(even)か奇数(odd)か *}
{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)であるか (2ずつグループ化したとき)
例.0=even, 1=even, 2=odd, 3=odd, 4=even, 5=even 等 *}
{if $var is even by 2}
	...
{/if}

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