如何利用织梦进行搜索查询操作?

织梦搜索查询功能可以通过修改模板和代码实现精准搜索,并支持自定义字段。

织梦搜索查询

背景介绍

在现代网站开发中,搜索功能已经成为不可或缺的一部分,织梦(DedeCMS)作为一款流行的内容管理系统,其搜索功能的实现方式也备受关注,本文将详细介绍如何在织梦系统中实现搜索查询,特别是高级搜索和自定义字段的精准搜索。

一、织梦搜索功能

织梦系统提供了多种搜索方式,包括前台搜索和高级搜索,前台搜索是较为简单的一种搜索方式,而高级搜索则提供了更多的筛选条件和自定义选项,织梦还支持自定义字段的搜索,这对于需要根据特定字段进行精准查询的场景非常有用。

二、高级搜索的实现

后台设置

进入模型管理:在织梦后台,点击“核心”>“内容模型管理”。

选择模型:在模型列表中选择一个已有的模型或新建一个模型。

添加字段:在模型管理界面,可以增加需要搜索的字段,例如身份证号码等。

修改模板

找到放大镜图标:在模型管理界面,点击模型后面的放大镜图标,进入高级搜索模板设置。

选择模板:默认使用官方提供的advancedsearch.htm模板,也可以自定义模板。

修改高级搜索PHP文件

打开文件:修改plus/advancedsearch.php文件。

修改代码:在大约142行的位置,找到以下代码:

如何利用织梦进行搜索查询操作?

  if(isset(${$var}) && trim(${$var})!='')
  {
      ${$var} = stripslashes(${$var});
      ${$var} = preg_replace("#[|"r
t%*?()$;,'%<>]#", "", trim(${$var}));
      ${$var} = addslashes(${$var});
      $where .= " AND addon.$var LIKE '%${$var}%'";
  }

修改为精准查询

  if(isset(${$var}) && trim(${$var})!='')
  {
      ${$var} = stripslashes(${$var});
      ${$var} = preg_replace("#[|"r
t%*?()$;,'%<>]#", "", trim(${$var}));
      ${$var} = addslashes(${$var});
      $where .= " AND addon.$var = '${$var}'";
  }
  else
  {
      ShowMsg('身份证不能为空,或输入不正确',1,0);exit;
  }

增加不为空的判断

  else
  {
      $sql = urldecode($sql);
      $query = $sql;
  }
  //print_r($sql);exit;
  $searchinfo2 = $dsql>GetOne($sql);
  if(!is_array($searchinfo2))
  {
      showmsg('查询的信息不存在,请检查输入','1');
      exit();
  }

三、前台搜索的实现

搜索表单

创建表单:在前端页面创建一个搜索表单,提交到plus/search.php

  <form name="form1" method="get" action="{dede:global.cfg_cmsurl}/plus/search.php">
      <input type="text" name="sc" id="sc" value="在这里输入关键词..."/>
      <input type="submit" name="submit" value="搜索"/>
  </form>

搜索结果模板

修改模板:搜索结果页模板通常为default/search.htm,可以根据需要自定义显示样式。

  <table border="0" cellspacing="0" cellpadding="0" width="90%">
      <tr>
          <td colspan="3"><strong>这里填写关键字进行搜索</strong></td>
      </tr>
      <tr>
          <td width="50%" valign="top"><strong>搜索标题</strong></td>
          <td width="50%" valign="top"><strong>搜索作者</strong></td>
          <td rowspan="2" width="30%" valign="middle"><strong>搜索内容</strong></td>
      </tr>
      {dede:arclist typeid='son' type='son' row='8'}
      <tr>
          <td height="20" align="center">[field:title/]</td>
          <td height="20" align="center">[field:writer function='strlen(@me)<=10 ? @me : ""' /][field:writer function='strlen(@me)>10 ? substr(@me,0,10).".."." : @me' /]</td>
          <td><a href='[field:arcurl/]'>[field:description function='cnsubstr(@me,80)'/]</a></td>
      </tr>
      {/dede:arclist}
  </table>

四、自定义字段搜索的实现

新增字段

后台添加字段:在模型管理中添加需要搜索的自定义字段,如证书编号、身份证号等。

修改搜索模板

修改表单:在前端搜索框中添加对应的输入框。

  <form action="/plus/zhengshu.php" method="get">
      <input type="hidden" name="pagesize" value="1">
      <input type="hidden" name="channeltype" value="这里填你的模型ID号"/>
      <p>
          <label>姓  名:</label>
          <input type="text" name="title"/>
      </p>
      <p>
          <label>身份证号:</label>
          <input type="text" name="shenfenzheng"/>
      </p>
      <p>
          <label>证书编号:</label>
          <input type="text" name="bianhao"/>
      </p>
      <p>
          <input type="submit" value="搜索"/>
      </p>
  </form>

搜索结果模板

创建模板:在模板目录中创建zhengshu.htm

如何利用织梦进行搜索查询操作?

  <table width="100%" class="table">  
      <h2>查询结果</h2>  
      <caption></caption>  
      <thead>  
          <tr>  
              <th>证书编号</th>  
              <th>身份证号</th>  
              <th>姓名</th>  
          </tr>  
      </thead>

      {dede:list titlelen='250'}

      <tr>

          <td>[field:bianhao/]</td>

          <td>[field:shenfenzheng/]</td>

          <td>[field:title/]</td>

      </tr>

      {/dede:list}

      <tr>

          <td colspan="9">

              {dede:pagelist listsize=1 runphp=yes}

              @me = (empty(@me) ? "<p >没有相关记录</p>" : "");

              {/dede:pagelist}

          </td>

      </tr>

  </table>

五、小编总结与最佳实践

优化搜索速度:对于大量数据,建议使用全文索引或者专门的搜索引擎如Elasticsearch来提高搜索效率。

用户体验:提供实时搜索建议和自动补全功能,提升用户体验。

安全性考虑:对用户输入进行过滤和验证,防止SQL注入等安全问题。

移动端适配:确保搜索功能在移动设备上也能良好运行,采用响应式设计。

六、相关问题与解答

如何修改织梦高级搜索为单条信息查询?

答案:要修改织梦的高级搜索为单条信息查询,需要进行以下几个步骤:

1、后台设置:在模型管理中添加需要搜索的字段,例如身份证号码。

2、修改模板:点击模型后面的放大镜图标,进入高级搜索模板设置,选择或自定义模板。

如何利用织梦进行搜索查询操作?

3、修改高级搜索PHP文件:打开plus/advancedsearch.php文件,在大约142行的位置,将模糊查询改为精准查询,并增加不为空的判断,具体代码如下:

   if(isset(${$var}) && trim(${$var})!='')
   {
       ${$var} = stripslashes(${$var});
       ${$var} = preg_replace("#[|"r
t%*?()$;,'%<>]#", "", trim(${$var}));
       ${$var} = addslashes(${$var});
       //$where .= " AND addon.$var LIKE '%${$var}%'"; //原模糊查询代码
       $where .= " AND addon.$var = '${$var}'"; //修改为精准查询代码
   }
   else
   {
       ShowMsg('身份证不能为空,或输入不正确',1,0);exit; //增加不为空的判断
   }

4、测试效果:保存所有更改后,重新进行搜索测试,确保功能正常。

2.如何在织梦系统中实现自定义字段的精准搜索?

答案:要在织梦系统中实现自定义字段的精准搜索,可以按照以下步骤操作:

1、后台添加字段:在模型管理中添加需要搜索的自定义字段,如证书编号、身份证号等。

2、修改搜索模板:在前端搜索框中添加对应的输入框,并在表单action属性中指定处理文件,如/plus/zhengshu.php,示例如下:

   <form action="/plus/zhengshu.php" method="get">
       <input type="hidden" name="pagesize" value="1">
       <input type="hidden" name="channeltype" value="这里填你的模型ID号"/>
       <p>
           <label>姓  名:</label>
           <input type="text" name="title"/>
       </p>
       <p>
           <label>身份证号:</label>
           <input type="text" name="shenfenzheng"/>
       </p>
       <p>
           <label>证书编号:</label>
           <input type="text" name="bianhao"/>
       </p>
       <p>
           <input type="submit" value="搜索"/>
       </p>
   </form>

3、创建搜索结果模板:在模板目录中创建zhengshu.htm,定义搜索结果的展示格式,示例如下:

   <table width="100%" class="table">  
       <h2>查询结果</h2>  
       <caption></caption>  
       <thead>  
           <tr>  
               <th>证书编号</th>  
               <th>身份证号</th>  
               <th>姓名</th>  
           </tr>  
       </thead>

       {dede:list titlelen='250'}

       <tr>

           <td>[field:bianhao/]</td>

           <td>[field:shenfenzheng/]</td>

           <td>[field:title/]</td>

       </tr>

       {/dede:list}

       <tr>

           <td colspan="9">

               {dede:pagelist listsize=1 runphp=yes}

               @me = (empty(@me) ? "<p >没有相关记录</p>" : "");

               {/dede:pagelist}

           </td>

       </tr>

   </table>

4、测试效果:保存所有更改后,进行搜索测试,确保自定义字段能够被正确查询并显示结果。

来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/114834.html

Like (0)
小编小编
Previous 2025年1月18日 00:23
Next 2025年1月18日 00:31

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注