> フロント機能 > 商品一覧を dtb_product_category.rank で並び替えたい |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
raccoon |
投稿日時: 2016/7/10 2:56
対応状況: −−−
|
新米 登録日: 2016/7/10 居住地: 投稿: 3 |
商品一覧を dtb_product_category.rank で並び替えたい 商品のおすすめ順並び替えは
こちらのプラグインを使っています: https://github.com/EC-CUBE/ProductRank-plugin マスターデータ管理から、mtb_product_list_order_by に 「3, おすすめ順」を登録し、 商品おすすめ順を上記プラグインで設定しました。 フロントの商品一覧のソート機能は提供されていないみたいなので、 とりあえず、 ProductRepository#getQueryBuilderBySearchData を直接以下のように変更して試してみました。 変更前:
変更後(おすすめ順追加):
そうすると、子孫カテゴリーを持たないカテゴリーのおすすめ順の場合は、 うまくページャーが機能するのですが、 子孫カテゴリーを持つカテゴリーのおすすめ順の場合は 同じ商品が複数回表示されてしまいます。 xdebugで処理を追っていった所、 Doctrine\ORM\Tools\Pagination\Paginator.phpの151行目の
ここで、実際に表示する商品のid一覧を取得していることがわかりました。 取得のためのSQLは以下のような感じです:
上の SQLの select の d1_.rank AS rank1 があるために、重複が除去できていない状態だと思いました。なので
を
というふうに、 d1_.rank AS rank1 を追加しないようにしたいのですが、 これはできそうでしょうか。 あるいは、もっと他の方法はありませんでしょうか。 どなたかお知恵をお貸しいただければ幸いです。 m(_ _)m |
DELIGHT |
投稿日時: 2016/7/10 8:03
対応状況: −−−
|
仙人 登録日: 2010/2/3 居住地: 熊本県・九州・長野県・関東甲信越 投稿: 572 |
Re: 商品一覧を dtb_product_category.rank で並び替えたい 商品に対してカテゴリ商品が複数あることが原因だと思います。
商品IDでグループ化してMAX(rank)等で並び替える必要があるのではありませんか? 手元に環境がないためコードを見た所管です。 間違っていたら申し訳ありません。
|
raccoon |
投稿日時: 2016/7/14 6:17
対応状況: −−−
|
新米 登録日: 2016/7/10 居住地: 投稿: 3 |
Re: 商品一覧を dtb_product_category.rank で並び替えたい DELIGHT様
ご提示いただいた方針で、 うまくいきました! 適切なアドバイス 本当にありがとうございます! m( _ _ ) m |
raccoon |
投稿日時: 2016/7/14 6:18
対応状況: 解決済
|
新米 登録日: 2016/7/10 居住地: 投稿: 3 |
Re: 商品一覧を dtb_product_category.rank で並び替えたい 対応状況を解決済みにいたします。
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |