织梦首页怎么调用搜索

99ANYc3cd6
预计阅读时长 19 分钟
位置: 首页 织梦建站 正文
  1. 简单直接的方式: 使用织梦自带的搜索表单代码,这种方式最简单,但样式和功能比较固定。
  2. 灵活强大的方式: 使用自定义表单,并调用自定义搜索功能,这种方式可以完全自定义搜索框的样式,并且可以指定搜索特定的模型(如文章、产品、图集等),非常灵活。

下面我将详细讲解这两种方法,并提供代码示例。

织梦首页怎么调用搜索
(图片来源网络,侵删)

使用织梦自带的搜索表单(最简单)

这是最直接的方法,直接调用系统内置的搜索模块,它会把用户带到 /plus/search.php 这个搜索结果页面。

操作步骤:

  1. 登录你的织梦后台。
  2. 进入“模板” -> “默认模板管理”。
  3. 找到你当前正在使用的首页模板文件,通常是 index.htm
  4. 在你希望显示搜索框的位置(通常是网站头部的右侧),插入以下代码。

代码示例:

<form name="formsearch" action="{dede:global.cfg_cmspath/}/plus/search.php">
    <div class="form-search">
        <input type="hidden" name="kwtype" value="0" />
        <input type="hidden" name="searchtype" value="titlekeyword" />
        <input type="text" name="q" class="search-keyword" placeholder="请输入搜索关键词" />
        <button type="submit" class="search-submit">搜索</button>
    </div>
</form>

代码参数解释:

  • {dede:global.cfg_cmspath/}/plus/search.php:这是织梦搜索结果页面的固定地址。{dede:global.cfg_cmspath/} 会自动替换为你的网站根目录URL,这样即使你把网站安装在子目录也能正常工作。
  • name="kwtype":搜索关键词类型。
    • value="0":模糊匹配(默认)。
    • value="1":精确匹配。
  • name="searchtype":搜索范围。
    • value="titlekeyword"和关键词(最常用)。
    • value="title":仅搜索标题。
    • value="all":搜索全文(内容)。
  • name="q":这是用户输入的关键词字段,必须保留
  • placeholder="...":输入框内的提示文字,可以自定义。
  • class="...":用于CSS样式控制的类名,你可以自定义或删除。

优点: 简单快捷,无需额外设置。 缺点: 样式固定,无法自定义搜索范围(比如只搜产品或只搜文章),且跳转到独立的结果页,可能影响用户体验。


使用自定义表单调用搜索(推荐,更灵活)

这种方法可以实现“站内搜索”的效果,即不跳转到新页面,而是在当前页面或一个固定的区域显示搜索结果,这种方式体验更好,也更能体现网站的专业性。

操作步骤:

第1步:创建自定义搜索表单

织梦首页怎么调用搜索
(图片来源网络,侵删)
  1. 在后台首页,点击“核心” -> “自定义表单”。
  2. 点击“增加新自定义表单”,填写表单信息:
    • 表单名称: 填一个你喜欢的名字,site_search
    • 目录名: 系统会自动生成,一般不用改。
    • 列表命名规则: 可以留空或自定义,search_{page}.htm
    • 列表行数:10 或你希望每页显示的结果数。
    • 表单说明: 可以简单写“站内搜索”。
    • 默认排序: 选择按 id 降序。
  3. 点击“提交”按钮创建。

第2步:添加搜索字段

  1. 在刚刚创建的自定义表单管理页面,点击“字段管理”。
  2. 点击“添加新字段”。
  3. 添加以下字段:
    • 字段名称: keyword (必须)
    • 字段别名: 搜索关键词
    • 字段类型: 单行文本
    • 前台表单调用:
    • 其他选项: 保持默认即可。
  4. 点击“保存”,不需要添加其他字段了。

第3步:生成搜索列表模板

  1. 在自定义表单管理页面,点击“生成列表”。
  2. 系统会提示你选择模板,点击“生成”即可,这会创建一个搜索结果页模板,通常位于 /templets/default/site_search.htm
  3. 打开这个 site_search.htm 文件,清空里面的所有代码,然后替换为以下代码:
{dede:global name='keyword' function='RemoveXSS(@me)'/}
<div class="search-result">
    <h2>搜索结果:“<strong>{dede:global.name='keyword'/}</strong>”</h2>
    <!-- 如果没有结果 -->
    {dede:if empty='result'}
        <p class="tac">抱歉,没有找到与“<strong>{dede:global.name='keyword'/}</strong>”相关的结果。</p>
    {/dede:if}
    <!-- 循环输出搜索结果 -->
    {dede:arclist titlelen='60' row='10'}
        <div class="result-item">
            <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
            <p>[field:info/]...</p>
            <small>来源:[field:typename/] | 发布时间:[field:pubdate function="MyDate('Y-m-d',@me)"/]</small>
        </div>
    {/dede:arclist}
    <!-- 分页 -->
    {dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
    <div class="dede_pages">
        <ul class="pagelist">
            <li>{dede:pagelist listitem='info,index,end,pre,next,pageno'/}</li>
        </ul>
    </div>
    {/dede:pagelist}
</div>

代码解释:

  • {dede:global name='keyword'...}:获取用户在首页搜索框输入的关键词。
  • {dede:arclist...}:这是核心,调用文章列表来显示搜索结果,你可以通过添加 channelid 属性来指定搜索特定的模型,channelid='1' 只搜索文章,channelid='19' 只搜索ID为19的产品模型。
  • [field:arcurl/][field:title/] 等都是文章的常规字段调用。

第4步:在首页添加搜索框

回到你的首页模板 index.htm,在需要的位置插入以下代码,这个代码会提交数据到你刚刚创建的自定义表单处理页面。

<form name="formsearch" action="{dede:global.cfg_cmspath/}/plus/list.php" method="get">
    <input type="hidden" name="tid" value="这里填入你的自定义表单ID" />
    <div class="form-search">
        <input type="hidden" name="channeltype" value="1" /> <!-- 1代表文章模型,可根据需要修改 -->
        <input type="text" name="keyword" class="search-keyword" placeholder="请输入搜索关键词" />
        <button type="submit" class="search-submit">搜索</button>
    </div>
</form>

关键参数解释:

  • action="{dede:global.cfg_cmspath/}/plus/list.php":自定义表单的数据提交地址。
  • name="tid"这是最重要的参数! 你需要填入你创建的自定义表单的ID。
    • 如何找到ID?回到后台“自定义表单”列表,鼠标悬停在你创建的表单名称上,浏览器状态栏会显示链接,如 dede/plus_list.php?tid=8,这里的 8 就是它的ID。
  • name="channeltype":指定搜索的模型。
    • 1:文章模型。
    • 2:图集模型。
    • 3:下载模型。
    • ...以此类推,如果你想让用户搜索所有内容,可以删除这个隐藏域。
    • 注意: 这个参数只对 arclist 标签有效,如果你在 site_search.htm 中想搜索多个模型,可以删除 channeltype,然后在 arclist 标签里用 channelid='1,2,3' 的方式指定。

总结与建议

特性 方法一 (自带搜索) 方法二 (自定义表单)
实现难度 非常简单 中等
样式自定义 差,受限于CSS 优秀,完全可控
搜索范围 /关键词/全文) 灵活(可指定模型、栏目等)
用户体验 跳转到新页面 可在同一页面或固定区域显示结果
推荐度 ⭐⭐ (适合快速实现) ⭐⭐⭐⭐⭐ (推荐,功能强大)

对于大多数网站,我强烈推荐使用方法二,虽然前期设置稍微复杂一点,但它带来的灵活性和更好的用户体验是值得的,你可以通过CSS轻松地将搜索框美化成你想要的样子,并且可以精确控制搜索的范围,让搜索结果更精准。

-- 展开阅读全文 --
头像
C语言中time函数为何返回NULL?
« 上一篇 今天
织梦展示置顶文章列表如何实现?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

目录[+]