2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

商品テーブルを拡張したテーブルも検索対象にする

Last updated at Posted at 2015-06-06
  • アドオンを作成していることが条件です。「my_product_extend
  • 今回の例で利用するテーブル cscart_products_ex ・・・product_idをキーとしてcscart_productsとつながっているテーブル

init.php

/app/addons/my_product_extend/init.php
/app/functions/fn.catalog.php で定義されているHOOKポイント「additional_fields_in_search」を利用する。

init.php
fn_register_hooks(
    'additional_fields_in_search'
);

※init.phpは、利用するHOOKポイントを宣言します。

func.php

/app/addons/my_product_extend/func.php

func.php

//検索対象追加フィールドを拡張
function fn_my_product_extend_additional_fields_in_search(&$params, &$fields, $sortings, $condition, &$join, $sorting, $group_by, &$tmp, $piece, $having)
{
    $params['pshort'] = 'Y';//ショート説明を含める
    $params['pfull'] = 'Y';//フル説明を含める
    $params['pkeywords'] = 'Y';//METAキーワードを含める
    
    //独自テーブルをJOIN
    if(AREA == 'A'){
        $join .= " LEFT JOIN ?:products_ex AS products_ex ON products_ex.product_id = products.product_id";
    }
    
    ///////////////////以下検索対象とする
    //カタログ番号
    $tmp .= db_quote(" OR products_ex.catelog_no LIKE ?l", '%' . $params['q'] . '%');
    
    //カタログ品名
    $tmp .= db_quote(" OR products_ex.catelog_name LIKE ?l", '%' . $params['q'] . '%');
    
    //メーカー品番
    $tmp .= db_quote(" OR products_ex.maker_item_code LIKE ?l", '%' . $params['q'] . '%');
}

※func.phpは、アドオンで利用する関数をまとめて記述します

これだけでショップフロント、管理パネルの検索ロジックを拡張できます。


CS-Cart
CS-CartはPHPとMySQLで書かれたECサイト構築パッケージです。
http://cs-cart.jp/

2
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?