Ticket #2364 (closed バグ指摘: 修正済)

Opened 7 years ago

Last modified 7 years ago

商品一覧> 一部の環境にて並べ替えが機能しない

Reported by: shutta Owned by: shutta
Priority: Milestone: EC-CUBE2.13.0
Component: フロント Version: 2.12.5
Keywords: Cc:
修正済み: yes

Description

コミュニティにて報告を頂いた。

お名前.comの共用サーバーSD等、一部の環境で商品一覧の並べ替えが機能しない。

お名前.comの共用サーバーSDで、2.11.5では商品の並び替えが機能するのに、2.12系では動かない件
 http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=11338&forum=2

商品一覧の並び替えについて
 http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=13187&forum=16

↓上記の内、原因の詳細の投稿。

初投稿です。
私も先日この問題にぶつかりまして、
環境はほぼ同じで、お名前.comの共用サーバーSDにeccube-2.12.2をインストールしました際に発生致しました。

もちろん弊社の環境やさくらのレンサバではソートが動作する事を確認しました。

解決方法としましては、
SC_PRODUCT.php、findProductIdsOrderの
$objQuery->setGroupBy('alldtl.product_id');
をコメントアウトするとソート出来るようになります。

原因はお名前.comの共用サーバーSDではphpMyAdminから、
select alldtl.product_id from dtb_products AS alldtl GROUP BY alldtl.product_id ORDER BY alldtl.product_id DESC
のクエリを実行してみるとソートがされないで検索結果が返される事がわかりまして、検証していくと、GROUP BY している構文にORDER BYしているとソートされないようです。
ですので、価格順または、新着順などをクリックしても通常通り
ORDER BY 句が入ったクエリが実行されるが結果としてソートされた結果が返ってきていないのでエラーなども発生せず原因が解りづらい状態となっておりました。

当対応で他の機能への影響があるのかまでは解らないですが、構文をみるかぎりは、
意味のないGROUP BYという感じでしたので、上記のとおり
SC_PRODUCT_EX.phpでfindProductIdsOrder関数をオーバーライドし、$objQuery->setGroupBy('alldtl.product_id');をコメントアウトすることで対応することが出来ましたので報告させていただきます。

Change History

comment:1 Changed 7 years ago by shutta

  • Owner changed from somebody to shutta
  • 修正済み set
  • Status changed from new to assigned

r23176 にて修正。

comment:2 Changed 7 years ago by h_yoshimoto

  • Status changed from assigned to closed
  • Resolution set to 修正済

ご対応ありがとうございました。

クローズさせて頂きます。

Note: See TracTickets for help on using tickets.