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
コメント