smartyテンプレートのループ処理の中で計算したりする

カラーミーショップ(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からスタートします。

smarty
シェアする
タイトルとURLをコピーしました