怎样将品牌搜索嵌入搜索栏(有代码)

2016-07-07 15:04 来源:www.chinab4c.com 作者:ecshop专家



目前ec搜索不支持品牌搜索,只能将品牌名称放入关键词才能搜索到。后台品牌管理页面有单独品牌搜索,能否整合到前台,让搜索框支持品牌搜索?

要实现这个功能似乎不难,本人试图在search.php页初始化搜索条件中增加一个语句:
$sql = 'SELECT DISTINCT brand_id FROM ' . $ecs->table('brand') . " WHERE brand_name LIKE '%$val%' ";

但这句运行和TAG语句有冲突,会出现错误,改为合并如下(注:实际注销了tag那个SQL只用上面这句也不行,搜索结果还是不对,谁知道问题在哪里?):

$sql = 'SELECT DISTINCT goods_id, brand_id FROM ' . $ecs->table('tag') . ',' . $ecs->table('brand') ." WHERE tag_words LIKE '%$val%' OR brand_name LIKE '%$val%' ";

搜索结果会出现一些无关的页面(关键词),估计这里用的两表联合查询并不科学,请高手指明还要做那些修改?



备注,其他修改代码如下:

$goods_ids = array();
$brand_ids = array();
(省略若干行)
$res = $db->query($sql);
while ($row = $db->FetchRow($res))
{
$goods_ids[] = $row['goods_id'];
$brand_ids[] = $row['brand_id'];
}
$db->autoReplace($ecs->table('keywords'), array('date' => local_date('Y-m-d'),
'searchengine' => 'ecshop', 'keyword' => $val, 'count' => 1), array('count' => 1));
}
$keywords .= ')';
$goods_ids = array_unique($goods_ids);
$brand_ids = array_unique($brand_ids);
$tag_where = implode(',', $goods_ids);
$brand_where = implode(',', $brand_ids);
if (!empty($tag_where))
{
$tag_where = 'OR g.goods_id ' . db_create_in($tag_where);
}
if (!empty($brand_where))
{
$brand_where = 'OR g.brand_id ' . db_create_in($brand_where);
}

回答:
我觉得在搜索栏加按品牌搜索实际意义不是很大,还不如加在品牌列表页中。可以参考一下我的网站
新购网 http://www.xcygw.com/brand.php

ls的搜索缺少按钮。

实际意义很大。很多搜索是要搜索品牌的。比如一个普通顾客想看你的店里“索尼”这个牌子有什么东西,他一般不会去找品牌页,首页品牌栏目也没显示(不可能显示所有,顾客又不熟悉你的系统),只会去页头上搜索,如果你的名称里没有这两个字,就搜索不出来,搜索不出来就以为没有。。。从顾客角度考虑,一切都要傻瓜化才行。