[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 開発コミュニティ – フォーラム



横浜在住。Web制作の仕事をしているへっぽこワーキングマザーです。6歳児に育てられています。







ディスカッション
コメント一覧
まだ、コメントがありません