ループ(繰り返し)処理の最初を判定
まずはループの最初の取得。結構試したのですが、MakeShop自体はPHPで書かれているようなので、テンプレートエンジンはループ処理の書き方から「 Smarty じゃないかこれ?」と思って、Smartyに寄せて書いたらできた!ちょっと違うのはloopの値を使わずに行うところでした。それ以外は同じで、first
を使います。
<{section name=i loop=$item.review.list}>
<{if $smarty.section.i.first}>最初の処理<{/if}>
<{/section}>
ループ(繰り返し)処理の最後を判定
次にループの最後の取得。まぁ最初と同じですね。last
を使います。
<{section name=i loop=$item.review.list}>
<{if $smarty.section.i.last}>最後の処理<{/if}>
<{/section}>
ループ(繰り返し)処理の〇〇番目を判定
最後にループの〇〇番目の取得。要するにインデックス値を取得するのにindex
を使います。
<{section name=i loop=$item.review.list}>
<{if $smarty.section.i.index === 2}>iが2の時の処理<{/if}>
<{/section}>
ちなみにこのindex
の値を使用して演算(例えば足し算)をしようとする場合。
// +2を詰めて書く
<{$smarty.section.i.index+2}>
// このように半角スペースを空けると演算されない
<{$smarty.section.i.index + 2}>
このように演算子の前後に半角スペースを空けると演算されない罠に一瞬はまりました。一瞬ですよ、一瞬。
これでいいのだろうか?
できた!!\(^o^)/
…………のだが、これは正解なのだろうか?MakeShop公式で公開されていることを確認できていないので、もし同じような事をされる際にこのサイトを見ていただいた場合は自己責任でお願いします。(公式情報求む)