关于ecshop搜索支持属性参数搜索

2016-09-11 20:39 来源:www.chinab4c.com 作者:ecshop专家

 ECSHOP前台可按商品名称关键词、商品货号关键词等查找商品,但不能按特点货号查找。特点货号是ECSHOP特点库存的仅有识别号,树立特点库存后,特点货号保存在products表中,下面分析怎么开发按特点货号关键词查找。
修正/search.php


一、修正查找关键词变量,增加特点货号关键词product_sn。
$keywords  .= "(goods_name LIKE '%$val%' OR goods_sn LIKE '%$val%' OR keywords LIKE '%$val%' $sc_dsad)"; 
修正为
$keywords  .= "(goods_name LIKE '%$val%' OR goods_sn LIKE '%$val%' OR product_sn LIKE '%$val%' OR keywords LIKE '%$val%' $sc_dsad)"; 
//增加按特点货号product_sn查询 
二、修正商品总数SQL句子,增加goods表与products表衔接查询。
/* 取得契合条件的商品总数 */ 
$sql   = "SELECT COUNT(*) FROM " .$ecs->table('goods'). " AS g ". 
    "WHERE g.is_delete = 0 AND g.is_on_sale = 1 AND g.is_alone_sale = 1 $attr_in ". 
    "AND (( 1 " . $categories . $keywords . $brand . $min_price . $max_price . $intro . $outstock ." ) ".$tag_where." )"; 
修正为:
/* 取得契合条件的商品总数 */ 
$sql   = "SELECT COUNT(*) FROM " .$ecs->table('goods'). " AS g ". 
    "LEFT JOIN " . $GLOBALS['ecs']->table('products') . " AS p ". 
        "ON g.goods_id = p.goods_id ". 
    "WHERE g.is_delete = 0 AND g.is_on_sale = 1 AND g.is_alone_sale = 1 $attr_in ". 
    "AND (( 1 " . $categories . $keywords . $brand . $min_price . $max_price . $intro . $outstock ." ) ".$tag_where." )"; 
三、修正商品查询SQL句子,增加goods表与products表衔接查询。
 
/* 查询商品 */ 
$sql = "SELECT g.goods_id, g.goods_name, g.market_price, g.is_new, g.is_best, g.is_hot, g.shop_price AS org_price, ". 
            "NULL.user_price, g.shop_price * '$_SESSION[discount]') AS shop_price, ". 
            "g.promote_price, g.promote_start_date, g.promote_end_date, g.goods_thumb, g.goods_img, g.goods_brief, g.goods_type ". 
        "FROM " .$ecs->table('goods'). " AS g ". 
        "LEFT JOIN " . $GLOBALS['ecs']->table('member_price') . " AS mp ". 
                "ON mp.goods_id = g.goods_id AND mp.user_rank = '$_SESSION[user_rank]' ". 
        "WHERE g.is_delete = 0 AND g.is_on_sale = 1 AND g.is_alone_sale = 1 $attr_in ". 
            "AND (( 1 " . $categories . $keywords . $brand . $min_price . $max_price . $intro . $outstock . " ) ".$tag_where." ) " . 
        "ORDER BY $sort $order"; 
修正为:
/* 查询商品 */ 
$sql = "SELECT g.goods_id, g.goods_name, g.market_price, g.is_new, g.is_best, g.is_hot, g.shop_price AS org_price, ". 
            "IFNULL(mp.user_price, g.shop_price * '$_SESSION[discount]') AS shop_price, ". 
            "g.promote_price, g.promote_start_date, g.promote_end_date, g.goods_thumb, g.goods_img, g.goods_brief, g.goods_type ". 
        "FROM " .$ecs->table('goods'). " AS g ". 
        "LEFT JOIN " . $GLOBALS['ecs']->table('member_price') . " AS mp ". 
                "ON mp.goods_id = g.goods_id AND mp.user_rank = '$_SESSION[user_rank]' ". 
        "LEFT JOIN " . $GLOBALS['ecs']->table('products') . " AS p ". 
                "ON g.goods_id = p.goods_id ". 
        "WHERE g.is_delete = 0 AND g.is_on_sale = 1 AND g.is_alone_sale = 1 $attr_in ". 
            "AND (( 1 " . $categories . $keywords . $brand . $min_price . $max_price . $intro . $outstock . " ) ".$tag_where." ) " . 
        "ORDER BY $sort $order";