CSS Selector Generator | CSS のセレクタ一覧を一発で自動生成!

03

12月2009年

[EC-CUBE カスタマイズ日誌] 第 8 回 商品名・検索ワード以外の項目でも検索可能にする

ichikawa 13:57 PM

  • はてなブックマークに登録
  • livedoorクリップに登録
  • Yahoo!ブックマークに登録
  • deliciousに追加

最近、冷えは万病の元だなと改めて感じています、ichikawaです。
さて、EC-CUBEカスタマイズの連載第 8 回目は、検索ワード以外の項目でも検索可能にする方法を紹介します。
今回のカスタマイズは、今までの連載中にご紹介したカスタマイズの中でも簡単な部類に入りますので気軽にチャレンジしてみて下さいね。

カスタマイズの概容

「商品検索時に、商品名と検索ワード以外の項目でもヒットするようにする。」

デフォルトでは、商品検索の際の対象項目は、商品情報テーブル(dtb_products)の商品名(name)と検索ワード(comment3)のみです。
今回は、この対象に各種コメント(main_list_comment と main_comment)を追加してみます。

ロジックの修正

商品一覧を取得する際の SQL 文の WHERE 句に、検索対象にしたいカラムを追加するのみで可能になります。
編集するファイルは data/class/pages/products/LC_Page_Products_List.php です。
変更箇所は494 行目付近。

変更前

foreach ($names as $val) {
    if ( strlen($val) > 0 ){
        // デフォルトは商品名と検索ワード
        $where .= " AND ( name ILIKE ? OR comment3 ILIKE ?) ";
        $ret = SC_Utils_Ex::sfManualEscape($val);
        $arrval[] = "%$ret%";
        $arrval[] = "%$ret%";
    }
}

変更後

foreach ($names as $val) {
    if ( strlen($val) > 0 ){
        //$where .= " AND ( name ILIKE ? OR comment3 ILIKE ?) ";
        // 各種コメントを追加
        $where .= " AND ( name ILIKE ? OR comment3 ILIKE ? OR main_list_comment ILIKE ? OR main_comment ILIKE ?) ";
        $ret = SC_Utils_Ex::sfManualEscape($val);
        $arrval[] = "%$ret%";
        $arrval[] = "%$ret%";
    // 増やした検索条件のカラム分、配列の要素を増やす
        $arrval[] = "%$ret%"; // main_list_commentの分
        $arrval[] = "%$ret%"; // main_commentの分
    }
}

続いて編集するファイルは class/db/dbfactory/SC_DB_DBFactory_MYSQL.php です。
変更箇所は 367 行目付近。
仮想 view のような配列の中の vw_products_allclass という要素に検索対象となるカラム名を追加します。

"vw_products_allclass" => '
(SELECT
    T2.product_id
    ,T1.product_code_min
    ,T1.product_code_max
    ,T1.price01_min
    ,T1.price01_max
    ,T1.price02_min
    ,T1.price02_max
    ,T1.stock_min
    ,T1.stock_max
    ,T1.stock_unlimited_min
    ,T1.stock_unlimited_max
    ,T2.del_flg
    ,T2.status
    ,T2.name
    ,T2.comment1
    ,T2.comment2
    ,T2.comment3
    ,T2.main_list_comment
    ,T2.main_comment // ← 今回追加したカラム
    ,T2.main_image
    ,T2.main_list_image
    ,T2.product_flag
    ,T2.deliv_date_id
    ,T2.sale_limit
    ,T2.point_rate
    ,T2.sale_unlimited
    ,T2.create_date
    ,T2.deliv_fee
    ,T3.rank
    ,T4.rank AS category_rank
    ,T4.category_id
 FROM
    (

※ コメントにてご指摘を頂き、2009.12.4 修正いたしました。ありがとうございました。

以上で、カスタマイズは完了です。
上記により、商品検索の際、商品名と検索ワード以外の項目(今回は各種コメント)でもヒットするようになります。

バシャログスタッフによるWebサイト制作サービス

トラックバック

このエントリーのトラックバックURL
http://c-brains.jp/cgi-bin/mt/###/2074
###はmt-tb.cgiに変更してください。

コメント

はじめましてこんにちわ。
私もこれがやってみたくて情報を探してたので助かります!!
ですが、追加してもエラーが出ます・・・。
なんででしょうね??

>MJさん

コメントありがとうございます。
バシャログがお役に立てて何よりです。

>ですが、追加してもエラーが出ます・・・。

申し訳ございませんでした。
記述に一部足りない部分があり、本日修正いたしました。

もう一度記事の通りにカスタマイズしてみて頂けますか?
再度エラーが出るようでしたら、エラーメッセージとともにお知らせいただければと思います。

ご報告ありがとうございました。
これからもバシャログをよろしくお願いいたします。

追記ありがとうございます!
助かりました!

ただ、僕の場合、
上記の34行目のあとのFROM句の中にも抽出対象のカラムを追記しないと
ダメでした。。。

> MJさん

コメントありがとうございます。
返信が遅くなってしまい、申し訳ございません。

>ただ、僕の場合、
>上記の34行目のあとのFROM句の中にも抽出対象のカラムを追記しないとダメでした。。。

確認したのですが、シーブレインの環境では、本文中の内容で問題がありませんでした。
もしよろしければ、実際どのように追加されたのか記述をコメントにてお知らせいただくことはできますか?

これからもバシャログをよろしくお願いいたします。

コメントを投稿

ページの先頭へ

POPULAR TAGS
  • バシャログスタッフによるWebサイト制作サービス

ARCHIVE

特集

RECENT COMMENTS

ishida on CSS Nite in Ginza, Vol.49「バシャログ LIVE」 で紹介したDreamweaverの正規表現クエリーを公開します
>市川さん コメントありがとうございます。 前提条件の部分
ichikawa on 1.2.3で整えるPHP開発環境【STEP.1】 XAMPPをインストール
いつもバシャログ。をご覧いただきありがとうございます。 >
市川 on CSS Nite in Ginza, Vol.49「バシャログ LIVE」 で紹介したDreamweaverの正規表現クエリーを公開します
どういう前提での使用例なのか、わかりませんが、 タグを明示的
studio-8ch on 1.2.3で整えるPHP開発環境【STEP.1】 XAMPPをインストール
いつも記事を大変興味深く、拝見いたしております。 是非、A
sakai on [使える CSS テクニック] CSSで実現するプルダウンメニュー
>とらのすけさん コメントありがとうございます。 CSS