バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
s.yamada
投稿日時: 2020/11/20 12:11
対応状況: −−−
半人前
登録日: 2020/10/13
居住地:
投稿: 12
非表示にしている規格の商品コードが検索にヒットする
▼テンプレート
[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
居住地:
投稿: 186
Re: 非表示にしている規格の商品コードが検索にヒットする
管理画面の
店舗設定>基本設定にあります
在庫切れ商品の非表示を有効にすると引っ掛からなくなります。

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

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

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


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,287名です
総投稿数は109,688件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

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

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