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

EC-CUBE

Posted by ponnao