- アドオンを作成していることが条件です。「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はPHPとMySQLで書かれたECサイト構築パッケージです。
http://cs-cart.jp/