バージョン選択

フォーラム

メニュー

オンライン状況

35 人のユーザが現在オンラインです。 (26 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 35
もっと...

サイト内検索

質問 > フロント機能 > 非表示にしている規格の商品コードが検索にヒットする

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
s.yamada
投稿日時: 2020/11/20 12:11
対応状況: −−−
新米
登録日: 2020/10/13
居住地:
投稿: 6
非表示にしている規格の商品コードが検索にヒットする
▼テンプレート
[EC-CUBE]4.0.3

[現象]
商品規格登録にてチェックを外して非表示にした規格に設定されていた商品コードで検索をおこなうと検索結果に商品が表示されてしまいます。

管理画面側の商品検索ではヒットしないようです。

デモサイトでも同じ現象が発生しました。

https://site4.ec-cube.net/products/list?category_id=&name=cube-0xxx

検索キーワード:cube-0xxx
は非表示にした規格に入っていた商品コードです。

解決方法わかれば教えてくださいませ



coremobile
投稿日時: 2020/11/20 13:19
対応状況: −−−
常連
登録日: 2018/8/30
居住地:
投稿: 52
Re: 非表示にしている規格の商品コードが検索にヒットする
管理画面の
店舗設定>基本設定にあります
在庫切れ商品の非表示を有効にすると引っ掛からなくなります。

在庫切れ商品を表示したい場合で非表示にした規格商品をヒットさせたくない場合はプログラムの修正が必要かと思います。
s.yamada
投稿日時: 2020/11/20 14:23
対応状況: −−−
新米
登録日: 2020/10/13
居住地:
投稿: 6
Re: 非表示にしている規格の商品コードが検索にヒットする
coremobile様

ご返信ありがとうございます。
ご指摘いただいた「在庫切れ商品の非表示」を有効にしてもヒットするようでした。

1.商品規格登録で(チョコ 16mm × 16mm 商品コード:cube-0xxx)をチェックを外し非表示にして保存


2.フロント側で「cube-0xxx」で検索をするとヒットする


デモサイトでも「在庫切れ商品の非表示」を有効にして試してみましたが同様の現象が発生いたしました。
これってバグになりますでしょうか?

一旦、visibleが0の商品のコードを空にして対応したいと思いますが、こちらって問題ありますでしょうか?

UPDATE `dtb_product_class` SET `product_code` = NULL WHERE `dtb_product_class`.`visible` = 0

的外れな内容でしたら申し訳ありません。

わかりましたら教えていただけると幸いです。
468
投稿日時: 2020/11/20 17:33
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 2696
Re: 非表示にしている規格の商品コードが検索にヒットする
現象が再現するのを確認しました。
フロントの商品検索処理が記述されている
function getQueryBuilderBySearchData()では
商品コードの判定が相関副問合せで行われている為、visibleが0にも関わらずレコードが有効とされているようです。

/src/Eccube/Repository/ProductRepository.php 159行目付近の
->andWhere(sprintf('NORMALIZE(p.name) LIKE NORMALIZE(:%s) OR 
  NORMALIZE(p.search_word) LIKE NORMALIZE(:%s) OR 
  EXISTS (SELECT wpc%d FROM \Eccube\Entity\ProductClass wpc%d WHERE p = wpc%d.Product AND NORMALIZE(wpc%d.code) LIKE NORMALIZE(:%s))',
  $key, $key, $index, $index, $index, $index, $key))


->andWhere(sprintf('NORMALIZE(p.name) LIKE NORMALIZE(:%s) OR 
  NORMALIZE(p.search_word) LIKE NORMALIZE(:%s) OR 
  EXISTS (SELECT wpc%d FROM \Eccube\Entity\ProductClass wpc%d WHERE p = wpc%d.Product AND NORMALIZE(wpc%d.code) LIKE NORMALIZE(:%s) AND wpc%d.visible = true)',
  $key, $key, $index, $index, $index, $index, $key, $index))

に変更すればvisible=0の条件が反映されるのではないでしょうか?


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

s.yamada
投稿日時: 2020/11/20 18:08
対応状況: 解決済
新米
登録日: 2020/10/13
居住地:
投稿: 6
Re: 非表示にしている規格の商品コードが検索にヒットする
468様

ありがとうございます。
いただいた変更でフロント側の検索結果にも表示されないようになりました。

修正点教えていただきありがとうございます!
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は67,471名です
総投稿数は98,837件です

投稿数ランキング

1
seasoft
7333
2
AMUAMU
2712
3
468
2696
4
nanasess
2116
5
umebius
1792
6
yuh
1612
7
red
1427
8
h_tanaka
1051
9
fukap
907
10
tsuji
863
11
shutta
835
12
tao_s
792
13 ramrun 789
14 karin 657
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.