カラーミーショップ(PRリンク)で使用されているsmartyはphpのテンプレートエンジンですが、phpとは若干違う部分もちらほらあります。
今回、ループ中の計算で少しハマってしまったので、誰かのために備忘録を。
smartyのループで計算する
smartyではassign を使って変数を作り、その変数を利用して計算することになります。
仮に、0スタートでループごとに1ずつ加算していくとすると、
{assign var="number" value=0 }
{section name=num loop=$test}
<p>{$number}</p>
{assign var="number" value=$number+1}
{/section}
となります。
ループに入る前にassign で任意の名前で変数を作り(例ではnumber)、ループ中にもう1度assignで四則演算などさせます。
少しまどろっこしい書き方ですが仕方ありません。
注意点というほどでもないですが、assignのvalueの値に空白を入れるとエラーが出ます。(そこに引っかかった)
単純な1加算ならindexやcounterも使える
先ほどの例のように1ずつ加算していくだけで良いのなら、counterやindexを利用することもできます。
例と同じ処理をするとして、
{section name=num loop=$review_item_num}
<p>{$smarty.section.num.index}</p>
または
<p>{$smarty.section.num.iteration}</p>
もしくは
<p>{counter}</p>
{/section}
*注 index以外は、1からスタートします。