[Smarty]カラーミーのsectionの理解と応用

loopでもって繰り返しで使われてる部分。

例えばこれ

商品画像の出力はこんな感じになってる。

1枚目の画像
<img src="<{$product.img_url}>" alt="<{$productlist[num].name|escape:'html'}>">

2枚目以降の画像
<{section name=num loop=$otherimg}>
<img src="<{$otherimg[num].url}>" alt="<{$productlist[num].name|escape:'html'}>">
<{/section}>

既存のテンプレートに書かれてるタグを使うだけで済むならいいんだけど、条件分岐とかを付けたくなったりした場合。

公式マニュアルだと明記されてないくさいけど、カラーミーショップはSmartyで作られている。

なので、Smartyがわかれば色々やれるようになる。

今回はその一例。

繰り返し回数に対応した条件分岐

例えばね。

<{if $review_use_flg}>
<ul>
<{section name=num loop=$reviewlist}>
    <li <{if $smarty.section.num.iteration <= 5}>class="active"<{/if}>>  ←5回目まで
        <time><{$reviewlist[num].date|date_format:"%G/%m/%d"}></time>
        <p><{$reviewlist[num].comment}></p>
    </li>
<{/section}>
</ul>
<{if $smarty.section.num.total > 5}>  ←ループ合計回数が5より上だったら
<button type="button"><span>もっと見る</span></button>
<{/if}>
<a href="<{$review_send_url}>"><span>レビューを書く</span></a>
<{/if}>

繰り返し内にifを入れることで何回目にどうのこうの、を仕込むことができる。
最初、最後だったらこんな感じ。

{if $smarty.section.num.first} 最初のループ <{/if}>
{if $smarty.section.num.last} 最後のループ <{/if}>

で、ループした回数を引っ張ることができる。
これはsection外でも使える。

そんな感じで

Smartyを調べたり、「カラーミー Smarty ◯◯」で検索をかけてもいいし、まあ、とにかくSmartyというものを使ってるんだと分かっておけば詰みはないですね。

今回の参考

https://www.hazymoon.jp/php/Smarty/05.html
http://piyopiyocs.blog115.fc2.com/blog-entry-605.html
https://www.smarty.net/docs/ja/language.function.section.tpl

コメント

タイトルとURLをコピーしました