3 - 4 : 組み込み関数
Smartyの組み込み関数はいくつもありますが、実際にimpressCMSを運用する上で使いそうなものをいくつか紹介します。
1 if 関数
if関数は、いわゆる分岐関数になります。
(1) 条件を満たすときだけ何かを行わせたい場合
<{if 条件}>
条件が満たされたときに表示させるもの
<{/if}>
(2)条件を満たすときと満たさないときにそれぞれ何かを行わせる場合
<{if 条件}>
条件が満たされたときに表示させるもの
<{else}>
条件が満たされなかったときに表示させるもの
<{/if}>
条件については、下の演算子を使います。
例えば、$num という変数が3のときだけ処理を行うという場合は
<{if $num == 3 }>
という書き方を行います。
条件演算子 |
代替 |
構文例 |
意味 |
PHP 相当 |
== |
eq |
$a == $b
$a eq $b |
等しい |
== |
!= |
ne, neq |
$a != $b
$a neq $b |
等しくない |
!= |
> |
gt |
$a > $b
$a gt $b |
より大きい |
> |
< |
lt |
$a < $b
$a lt $b |
より小さい |
< |
>= |
gte, ge |
$a >= $b
$a ge $b |
以上 |
>= |
<= |
lte, le |
$a <= $b
$a le $b |
以下 |
<= |
=== |
|
$a === 0 |
同一性のチェック |
=== |
! |
not |
! $a
not $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 |
2 foreach関数
これは複数のデータがある場合に繰り返し処理を行うという点で、非常によく使う関数になります。
いくつかのデータがある配列変数を一つずつ取り出して処理を行うときにこれを使います。
(1)単純な配列の場合
php側で
$data[0] = 135;
$data[1] = 140;
$data[2] = 145;
$data[3] = 150;
$data[4] = 155;
$xoopsTpl -> assign('data', $data);
だったときは、
<{foreach from=$data item=edata}>
data = <{$edata}>
<{/foreach}>
という書き方をします。($dataが連想配列を含んでいても構いません)
<{foreach from (assignされた変数名) item=(各行のデータを表す仮変数名) }>
それぞれの処理
<{/foreach}> という書き方ですね。
(2)連想配列で、配列の名称名も使う場合
php側で
$data['first'] = 135;
$data['second'] = 140;
$data['third'] = 145;
$data['fourth'] = 150;
$data['fifth'] = 155;
$xoopsTpl -> assign('data', $data);
だったときに、Smarty側で
<{foreach from=$data key=keyname item=edata}>
<{$keyname}>データは<{$edata}>です
<{/foreach}>
というような書き方をすると 「firstデータは135です」みたいに表記されます。
なお、foreachはネスト(複数次元)することが出来ます。
<{foreach from=$data item=edata}>
<{foreach from=$edata item=eacheach}>
<{$eacheach.aa}>を表示
<{/foreach}>
<{/foreach}>
みたいな感じですね。
3 php関数
これは、phpタグ内で、phpのデータを処理したり、参照したりすることができる関数です。
ちょっと難しい関数なので、できれば使わないことを勧めます
<{php}>
echo "sssssssss";
<{/php}>
のような感じです。