DEDE自定义字段搜索方法

之前看到很多人想要自定义字段搜索功能,官方又不给出,而我自己也正需要自定义字段搜索,于是就花了半天时间研究了下DEDE的搜索代码,终于研究出来了,现在分享给大家
5.1版的还没用,原因是之前用5.0的改了很多东西,再升级成5.1量太大了,所以这次写个自定义字段搜索的教程也是适用5.0版,.5.1的也应该类似吧
好了,废话不多说了,具体操作如下

一:打开你的数据库,找到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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/8fcac709fa80c5de9383e541ff87f4fd.html