魔扣论坛

魔扣源码论坛业务
查看: 500|回复: 1

[织梦教程] dede 自定义字段搜索方法

[复制链接]
  • TA的每日心情
    奋斗
    2 小时前
  • 签到天数: 2958 天

    [LV.Master]开坛老将

    7万

    主题

    227

    回帖

    27万

    积分

    管理员

    Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

    魔扣币
    745789
    贡献
    157917
    威望
    32799

    最佳新人活跃会员热心会员推广达人宣传达人突出贡献优秀版主荣誉管理论坛元老

    发表于 2020-8-5 23:34:42 | 显示全部楼层 |阅读模式
    魔扣币兑换比例:【 50以下 : ¥1 = 10 魔扣币 】丨【 50 - 100 :¥1 = 20 魔扣币】丨【 100以上:¥1 = 30 魔扣币 】

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

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

        一:打开你的数据库,找到dede_full_search这个表,在里面把你自定义的字段添加进表,这里以我的网站为例,我添加了myskill,myexchange,mygoods,myexgoods,这4个字段

        二:打开/member/article_add_action.,找到”//更新全站搜索索引”,在下面的一段代码中插入刚才添加的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/]这样连在一起是显示不出来的
    好了,写的这么详细,相信大家应该看的懂吧,虽然有点复杂,不过有总比没有好,呵呵.

    会员购买:>> 点击购买 << | 魔扣币购买:>> 点击购买 <<
    承接业务:服务器代维丨网站托管丨SEO
    联系客服:微信:morko-net | QQ:1367681973

    该用户从未签到

    0

    主题

    289

    回帖

    578

    积分

    高级魔扣

    Rank: 4

    魔扣币
    289
    贡献
    289
    威望
    0
    发表于 2020-8-6 09:37:52 | 显示全部楼层
    轻轻的打开你的空间,让你知道我的到来!慢慢放飞我的祝福,让你感到我的存在!让风儿送去我的心声,让星星传递我的问候!魔扣源码论坛愿我的到访让你永远开心快乐!
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    • 联系我们
    • 新浪微博 :
    • 在线客服 :魔扣科技 
    • 源码QQ群 :魔扣源码论坛官方总群
    • 联系邮箱 :charlin#morko.net
    • 微信扫一扫
    快速回复 返回顶部 返回列表