织梦dedecms如何自定义字段搜索方法

92建站   2020-11-02   收藏本文

有人问织梦dedecms如何自定义字段搜索?以前看到很多人想定制字段检索功能,但是没有正式提供。我自己也需要定制字段检索,花了很长时间研究DEDE的检索代码,终于研究出来了。本站曾经写过dedecms搜索结果按点击排序的方法,现在和大家分享dedecms自定义字段搜索的方法。

有人问织梦dedecms如何自定义字段搜索?以前看到很多人想定制字段检索功能,但是没有正式提供。我自己也需要定制字段检索,花了很长时间研究DEDE的检索代码,终于研究出来了。本站曾经写过dedecms搜索结果按点击排序的方法,现在和大家分享dedecms自定义字段搜索的方法。

一:打开数据库,找到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/]这样连在一起是显示不出来的

上面就是dedecms自定义字段搜索的介绍,若有疑问可以找小编进一步探讨交流~

展开