当前位置:首页 > 行业动态 > 正文

如何在织梦DedeCMS模板中实现基于自定义字段的搜索功能?

在织梦dedecms模板中,实现按照自定义字段搜索的方法是使用SQL语句和联合查询。

在织梦CMS(DedeCMS)中,实现按照自定义字段搜索的功能需要一些代码的修改和添加,以下是具体的实现方法:

一、修改include/extend.func.php文件

1、打开include/extend.func.php文件

在文件末尾添加以下代码:

   function Search_addfields($id, $result){
       global $dsql;
       $mnkj = $dsql>GetOne("SELECT * FROMdede_addonshop where aid='$id'");
       $name=$mnkj[$result];
       return $name;
   }

addonshop是你要调用自定义字段的附加表,根据具体情况可能需要修改为addonarticle或其他表名。

2、修改include/arc.searchview.class.php文件

打开include/arc.searchview.class.php文件,找到“//处理一些特殊字段”的位置,在其下面添加如下代码:

   $row["price"]=Search_addfields($row["id"],"price");

这里假设price是你要调用的自定义字段名称,如果有多个自定义字段,可以添加多行代码,但要将price替换为相应的字段名。

3、在搜索模板中调用自定义字段

打开search.htm文件,使用[field:字段名/]标签来调用自定义字段,

   [field:price/]

这里的price应替换为你实际的自定义字段名。

实现搜索功能

1、修改数据库

在dede_full_search表中添加你的自定义字段,

   ALTER TABLE dede_full_search ADD COLUMN myskill VARCHAR(255);

这样,你就可以在全站搜索时包含这个自定义字段。

2、更新搜索索引

打开member/article_add_action.php文件,找到“//更新全站搜索索引”的位置,在其下面的代码中插入你添加的字段,

   'myskill' => $myskill,
   'myexchange' => $myexchange,

确保字段名与之前在数据库中添加的字段名一致。

3、修改搜索类型判断

打开include/inc_arcsearch_view.php文件,找到如下代码:

   if($this>SearchType != "titlekeyword"){
       $kwsqlarr[] = " ying_full_search.title like '%$k%' ";
   }else{
       $kwsqlarr[] = " ying_full_search.title like '%$k%' ";
       $kwsqlarr[] = " ying_full_search.addinfos like '%$k%' ";
       $kwsqlarr[] = " ying_full_search.keywords like '%$k%' ";
   }

添加对自定义字段的判断,

   if($this>SearchType != "skill"){
       $kwsqlarr[] = " ying_full_search.myskill like '%$k%' ";
       $kwsqlarr[] = " ying_full_search.myexchange like '%$k%' ";
   }else{
       $kwsqlarr[] = " ying_full_search.myexchange like '%$k%' ";
       $kwsqlarr[] = " ying_full_search.myskill like '%$k%' ";
   }

这样,当你选择不同的搜索类型时,系统会相应地搜索不同的自定义字段。

4、高亮显示搜索结果

在include/inc_arcsearch_view.php文件中,找到处理特殊字段的位置,添加如下代码:

   $row["myskill"] = $this>GetRedKeyWord(cn_substr($row["myskill"],$infolen));
   $row["myexchange"] = $this>GetRedKeyWord(cn_substr($row["myexchange"],$infolen));

这样,在搜索结果页调用自定义字段时,关键字会以红色高亮显示。

FAQs

1、如何在首页调用自定义字段?

答:在首页调用自定义字段,可以使用{dede:arclist}标签,并添加addfields参数。

   {dede:arclist row=8 titlelen=32 addfields='jiage' channelid='1'}
       <li><span>¥[field:jiage/]起</span><a href="[field:arcurl/]">[field:title/]</a></li>
   {/dede:arclist}

这里的jiage是自定义字段名,channelid='1'表示文章模型。

2、如何删除自定义字段?

答:删除自定义字段可以通过后台操作或直接修改数据库实现,后台操作步骤如下:进入内容模型管理 > 选择要删除字段的模型 > 点击更改小图标 > 在字段管理选项中找到要删除的字段 > 点击删除按钮即可。

0