睢闫网络为您打造全面营销系统,营销网络建设第一品牌!
验证码: 看不清?点击更换
注册
签到 网页翻译为英文
1823-8012-605

营销型网络系统 顶级核心团队

让传统企业获得更多的订单和询盘!

您现在所在的位置:主页 > 网站建设

织梦自定义字段搜索功能实现教程

时间:2016-09-15 18:29    来源:睢闫网络传媒   访问人数:  业务咨询    在线下单

第一步、打开你的数据库,找到名为dede_full_search的数据库表,在里面把你自定义的字段添加进表,例如你的自定义字段为mygoods,则添加mygoods进去。

 

第二步、打开/member/article_add_action.php文件,在里面找到“//更新全站搜索索引”,在下面的一段代码中插入刚才添加的字段,例:“'mygoods'=>$mygoods”,这里说明一下,前面的'mygoods'为你发布文章时添加的自定义字段,后面的为刚才在表dede_full_search中添加的字段(建议在表中添加字段的时候写成跟你之前字定义的字段一样)这里最好写成一样,可以省去很多麻烦

 

第三步、打开/include/inc_arcsearch_view.php文件,在里面搜索titlekeyword,找到如下代码:


 

1 if($this->SearchType != "titlekeyword"){
2  $kwsqlarr[] = " ying_full_search.title like '%$k%' ";
3  }else{
4  $kwsqlarr[] = " ying_full_search.title like '%$k%' ";
5  $kwsqlarr[] = " ying_full_search.addinfos like '%$k%' ";
6  $kwsqlarr[] = " ying_full_search.keywords like '%$k%' ";
7  }

 


分析代码SearchType != "titlekeyword,搜索类型为titilekeyword,即前台搜索下拉框中的智能模糊搜索,$kwsqlarr[] = " ying_full_search.title like '%$k%' ";为搜索full_search表中的title字段,好了,知道了这段代码的作用,我们就知道该如何添加自己的搜索了,下面把我的代码作为例子


 

1 if($this->SearchType != "goods"){
2  $kwsqlarr[] = " ying_full_search.mygoods like '%$k%' ";
3  $kwsqlarr[] = " ying_full_search.myexchange like '%$k%' ";
4  }else{
5  $kwsqlarr[] = " ying_full_search.myexchange like '%$k%' ";
6  $kwsqlarr[] = " ying_full_search.mygoods like '%$k%' ";
7 }

 

第四步、修改搜索框代码,代码在哪我就不说了吧,大家都知道在哪,搜索框原代码为


 

1 <select name="searchtype" id="searchtype">
2  <option value="titlekeyword" selected>智能模糊搜索</option>
3  <option value="title">仅搜索标题</option>
4  </select>

 

这里只需修改上面的代码,修改后的代码为


 

1 <select name="searchtype" id="searchtype">
2  <option value="goods">搜物品</option>
3  </select>

 


 value="",这填的是第三步中添加的SearchType后面的,即搜索类型,这个你自己定义

 

第五步、还是打开/include/inc_arcsearch_view.php文件,找到“//处理一些特殊字段”,把你之前的自定义的字段添加进去,这里还是以我的为例子


在下面添加

 

1 $row["mygoods"] = $this->GetRedKeyWord(cn_substr($row["mygoods"],$infolen));

 

第六步、最后一步了,打开templets/default/search.htm文件,这里就是搜索页调用的模版,这里要调用只要[field:你自定义的字段/],还是以我的网站为例[field:mygoods/],这样调用就OK,但是要注意一点,假如你2个字段放一起调用中间最好加个空格或者其他符号。


多个字段:

一:打开你的数据库,找到dede_full_search这个表,在里面把你自定义的字段添加进表,这里以我的网站为例,我添加了myskill,myexchange,mygoods,myexgoods,这4个字段
二:打开/member/article_add_action.php,找到”//更新全站搜索索引”,在下面的一段代码中插入刚才添加的4个字段,例:“’myskill’=>$myskill,’myexchange’=>$myexchange,’mygoods’=>$mygoods,’myexgoods’=>$myexgoods”,这里说明一下,前面的’myskill’为你发布文章时添加的自定义字段,后面的为刚才在表dede_full_search中添加的字段(建议在表中添加字段的时候写成跟你之前字定义的字段一样)这里最好写成一样,可以省去很多麻烦
三:打开/include/inc_arcsearch_view.php,搜索titlekeyword,找到如下代码
Copy code
if($this->SearchType != “titlekeyword”){
$kwsqlarr[] = ” dede_full_search.title like ‘%$k%’ “;
}else{
$kwsqlarr[] = ” dede_full_search.title like ‘%$k%’ “;
$kwsqlarr[] = ” dede_full_search.addinfos like ‘%$k%’ “;
$kwsqlarr[] = ” dede_full_search.keywords like ‘%$k%’ “;
}
分析下代码SearchType != “titlekeyword,搜索类型为titilekeyword,即前台搜索下拉框中的智能模糊搜索,$kwsqlarr[] = ” dede_full_search.title like ‘%$k%’ “;为搜索full_search表中的title字段,好了,知道了这段代码的作用,我们就知道该如何添加自己的搜索了下面把我的代码作为例子
Copy code
if($this->SearchType != “skill”){
$kwsqlarr[] = ” dede_full_search.myskill like ‘%$k%’ “;
$kwsqlarr[] = ” dede_full_search.myexchange like ‘%$k%’ “;
}else{
$kwsqlarr[] = ” dede_full_search.myexchange like ‘%$k%’ “;
$kwsqlarr[] = ” dede_full_search.myskill like ‘%$k%’ “;
}
if($this->SearchType != “goods”){
$kwsqlarr[] = ” dede_full_search.mygoods like ‘%$k%’ “;
$kwsqlarr[] = ” dede_full_search.myexchange like ‘%$k%’ “;
}else{
$kwsqlarr[] = ” dede_full_search.myexchange like ‘%$k%’ “;
$kwsqlarr[] = ” dede_full_search.mygoods like ‘%$k%’ “;

}
,因为我的myskill和myexchange2个字段是一起的,而 mygoods和myexgoods是一起的,所以我用了2个if else语句
四:修改搜索框代码,代码在哪我就不说了吧,大家都知道在哪,搜索框原代码为
Copy code
<select name=”searchtype” id=”searchtype”>
<option value=”titlekeyword” selected>智能模糊搜索</option>
<option value=”title”>仅搜索标题</option>
</select>
这里只需修改上面的代码,修改后的代码为
Copy code
<select name=”searchtype” id=”searchtype”>
<option value=”skill” selected>搜技能</option>
<option value=”goods”>搜物品</option>
</select>
value=”",这填的是第三步中添加的SearchType后面的,即搜索类型,这个你自己定义
五:还是打开/include/inc_arcsearch_view.php,找到//处理一些特殊字段,把你之前的自定义的字段添加进去,这里还是以我的为例子
在先面添加
Copy code
$row[”myskill”] = $this->GetRedKeyWord(cn_substr($row[”myskill”],$infolen));
$row[”myexchange”] = $this->GetRedKeyWord(cn_substr($row[”myexchange”],$infolen));
$row[”mygoods”] = $this->GetRedKeyWord(cn_substr($row[”mygoods”],$infolen));
$row[”myexgoods”] = $this->GetRedKeyWord(cn_substr($row[”myexgoods”],$infolen));
其实只要添加 $row[”myskill”] = $row[”myskill”];(另外3个我就不写了,类似)就够了,但是我为什么要这样写呢,这样写的作用就是让你在搜索结果页调用的时候显示关键子为红色
六:最后一步了,打开templets/default/search.htm,这里就是搜索页调用的模版,这里要调用只要[field:你自定义的字段/],还是以我的网站为例[field:myskill/],这样调用就OK,但是要注意一点,假如你2个字段放一起调用中间最好加个空格或者其他符号,假如[field:myskill/][field:mygoods/]这样连在一起是显示不出来的

下载此文章
联系方式

中国 · 睢县 · 建设路天湖城1005号

公司: 睢闫网络传媒有限公司

电话:1823-8012-605

邮箱:732541231@qq.com

QQ在线咨询

商务服务或业务咨询请点击以下QQ头像

网站建设-点击洽谈

数据库系统-点击洽谈

其他项目-点击洽谈

至电顾问需求或技术支持

需要做项目或需要技术支持业务请来电,谢谢!

18238012605 -郑经理

18336092044 -李经理

18671257743 -艾经理

告诉我们您的需求

在线填写需求,我们将尽快为您答疑解惑。

业务咨询QQ:732541231

售后服务QQ:732541231

电话:1823-8012-605

工作时间 9:00 ~ 18:00

工作日(周一至周五)

我们将在1个小时内回复,资料会保密处理。