カラーミーの商品ループにはforeachがおすすめ

カラーミーショップのテンプレートで商品一覧などのループ処理はsectionループで書かれていますが、foreachで記述した方が管理しやすいよ?とおすすめする独り言のような記事です。

商品ループはforeach文の方がメンテナンスしやすい

たとえばカテゴリページなどの一覧は下のようなコードで出力されます。

<{section name=num loop=$productlist}>
  <p><{$productlist[num].name}></p>
<{/section}>

で、このsectionループの何が気に入らないかというと、ループ中の処理にloop対象(上の例では$productlist)を書かないといけないということです。

数えてみたら、カラーミーショップの商品リストのループは8種類あります(おすすめ・イチオシ・売れ筋・新着・履歴・お気にいり・組み合わせ・カテゴリ)。

商品ループの出力内容は大体どれも同じになると思いますが、もし出力内容を変更・追加するとなると、ほとんど同じようなコードを8回書き直す羽目になります。これはちょっと面倒くさい。

そこでforeachで記述するとどうなるかというと、

<{foreach from=$productlist key=key item=item name=name}>
  <p><{item.name}></p>
<{/foreach}>

となり、ループ内の処理はloop対象に左右されません。(* 注:カラーミーショップのテンプレートはsmarty2.6なのでforeach文もv2仕様で書く必要があります)

itemがvalueのことです。nameは省略可能。(foreach.first やforeach.lastを使うなら必要)

これなら、同じ処理内容であれば完全に同じコードとなるので、8回コピペするなり、コードを一箇所にまとめて使い回しするなり、とりあえず管理面が楽になります。

需要は少なそうですが、メンテ面倒くせーとなっている方がいればご参考までに。

コードを1箇所にまとめるのには、フリーページを使うのが一番かんたんです。

参考

smarty – foreach(v2)

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