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を使ってます。

シェアありがとうございます

  • このエントリーをはてなブックマークに追加
  • Pocket

Comment

  1. 藤田 より:

    eccubeの検索について調べていたらこちらにたどり着きました。

    こちらの記事では「商品コード」ですが、
    さらに「メーカー名」を追加したいのですが、どのように書いていいのかわかりません。

    こちらの記事と同じようなやり方であれば教えてください。

    色々試してみたのですが、うまく動いてくれません・・。

    お忙しいと思いますが、お力を貸していただければ嬉しく思います。

    よろしくお願い致します。

    • みたやん より:

      藤田様
      コメントありがとうございます。

      手元にECCUBEの環境が無く検証はしていないので、ちゃんと動くかわかりませんが…。
      メーカー名をリストから選択するのではなく、メーカー名を手入力をすることを前提としています。

      $searchCondition[‘where’] .= ‘ AND ( alldtl.name ILIKE ? OR alldtl.comment3 ILIKE ? OR maker_id IN (SELECT maker_id FROM dtb_maker WHERE name ILIKE ? AND del_flg = 0) ) ‘;

      $searchCondition[‘arrval’][] = “%$val%”;
      $searchCondition[‘arrval’][] = “%$val%”;
      $searchCondition[‘arrval’][] = “%$val%”;

      これで行けそうな気がしますが如何でしょう。

  2. 藤田 より:

    みたやん 様

    回答ありがとうございます。

    回答通り修正したらきちんと動きました。

    大変助かりました。

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

    お忙しい中のご返信感謝いたします。

Your Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

  • プロフィール

    みたやんです。様々なWebシステムの開発に携わってきました。ICTに関する困りごとなら何なりとお問い合わせください。

    似顔絵はかでる工房様に作成していただきました。

PAGE TOP ↑