EC-CUBEで商品コードの検索を追加したいときの処理
EC-CUBEの商品検索には、デフォルトで商品コードでの検索が出来ないので、お客様から商品コードでも検索できるようにして欲しいという要望がありました。
そこでてっとり早くネットで調べてみると、data/class/pages/products/LC_Page_Products_List.phpに以下のコードを追加するといった記事を良く見かけます。
'$searchCondition['where'] .= ' AND ( alldtl.name ILIKE ? OR alldtl.comment3 ILIKE ? OR pc.product_code ILIKE ?) '
;
$searchCondition
[
'arrval'
][] =
"%$val%"
;
$searchCondition
[
'arrval'
][] =
"%$val%"
;
$searchCondition
[
'arrval'
][] =
"%$val%"
;
でも、これを信用すると、規格が登録されたデータが存在すると件数とかが合いません。
しかも、この修正だと、他にもSC_Product.phpにも修正が必要になります。
今回は規格の商品が非常に沢山登録されていることもあり、明らかに検索結果の件数に間違いがありました。色々と修正してそれらしく動いたのですが、なんか心もとないという事で調べ続けた結果、管理画面の商品検索には商品コードでの検索項目がある事を思い出しました。
それを参考にしたのが以下のコードです。
「data/class/pages/products/LC_Page_Products_List.php」のlfGetSearchConditionに以下のコードを書くだけです。
$searchCondition[‘where’] .= ‘ AND ( alldtl.name ILIKE ? OR alldtl.comment3 ILIKE ? OR product_id IN (SELECT product_id FROM dtb_products_class WHERE product_code ILIKE ? AND del_flg = 0) ) ‘;
$searchCondition[‘arrval’][] = “%$val%”;
$searchCondition[‘arrval’][] = “%$val%”;
$searchCondition[‘arrval’][] = “%$val%”;
これで、規格が登録されていても問題なく検索ができます。
いやー、はまりました。
最初から、管理画面の商品検索のロジックを見れば即解決だったんですけど…。
ちなみにバージョンは2.13.3を使ってます。
eccubeの検索について調べていたらこちらにたどり着きました。
こちらの記事では「商品コード」ですが、
さらに「メーカー名」を追加したいのですが、どのように書いていいのかわかりません。
こちらの記事と同じようなやり方であれば教えてください。
色々試してみたのですが、うまく動いてくれません・・。
お忙しいと思いますが、お力を貸していただければ嬉しく思います。
よろしくお願い致します。