[EC-CUBE覚書]カテゴリーページの商品の順番をいじくる例参考
そもそもカテゴリページのデフォルト順はどうなっとるの?
商品IDの降順
ちなみに「商品ID」とは、商品登録したときに勝手に振り分けられる番号です。
なので、登録したものから新しく積み上げる感じと認識してればよかろう。
最初「商品コード」と勘違いしていて、えらく混乱した(;´Д`)
ちなみに切り替え表示については、
新着順 – 登録した順番に積み上げられます。
価格順 – 価格の安い順に並びます。
昇順にしてみた。
レアケースと思いますが、商品総入れ替えの関係で、昇順にしてみた方が見栄えがよかったのと、新しく商品を追加することはしばらくなさそうだったので、昇順にしてみた。
いじるファイル
/data/class/pages/products/LC_Page_Products_List.php
いじる箇所
296行目あたり
default: if (strlen($searchCondition["where_category"]) >= 1) { $dtb_product_categories = "(SELECT * FROM dtb_product_categories WHERE ".$searchCondition["where_category"].")"; $arrval_order = array_merge($searchCondition['arrvalCategory'], $searchCondition['arrvalCategory']); } else { $dtb_product_categories = 'dtb_product_categories'; } $order = <<< __EOS__ ( SELECT T3.rank FROM $dtb_product_categories T2 JOIN dtb_category T3 USING (category_id) WHERE T2.product_id = alldtl.product_id ORDER BY T3.rank DESC, T2.rank DESC LIMIT 1 ) DESC ,( SELECT T2.rank FROM $dtb_product_categories T2 JOIN dtb_category T3 USING (category_id) WHERE T2.product_id = alldtl.product_id ORDER BY T3.rank DESC, T2.rank DESC LIMIT 1 ) DESC ,product_id __EOS__; $objQuery->setOrder($order); break; }
これの「DESK」と記述されてるところを全て「ASK」に置換しました。
「T3.rank DESC, T2.rank DESC」と記述されてるところの意味がよくわからなかったのですが、カテゴリーが2個にまたがるときの処理かなぁとなんとなく思って、そこも変えました。参考。
バグ!?
商品が2つ登録されているカテゴリーがあって、そこだけ順番通りにいかなかったです。7→6という順番になってしまう(;´Д`)
類似例メモ
自分のと違うやり方!これだと管理画面『商品管理>商品並び替え』が正常に機能しなくなるらしい。
[ec-cube] 商品一覧を商品ID昇順に変更する at フォノクラフト株式会社:作業メモや備忘録など
順番の切り替えに「価格の高い順」を加えるやり方2つ。
商品一覧の表示順変更 – aki193の日記
eccube 2.11.x 商品一覧ページの商品ソート(並べ替え)について|φ(..)メモとして残しておこう…
更新日時で並び替える例
EC-CUBEの小技:商品一覧ページを更新日時で並び替える | 戯れ問答
こちらは並び順切り替えに「商品コード」を追加する感じ
商品一覧の並び順を商品コード順にソートする方法。|EC-CUBE 開発コミュニティ – フォーラム
こちらは管理画面の順番を固定する方法みたいです。
商品一覧の表示順について|EC-CUBE 開発コミュニティ – フォーラム
ディスカッション
コメント一覧
まだ、コメントがありません