- 简单直接的方式: 使用织梦自带的搜索表单代码,这种方式最简单,但样式和功能比较固定。
- 灵活强大的方式: 使用自定义表单,并调用自定义搜索功能,这种方式可以完全自定义搜索框的样式,并且可以指定搜索特定的模型(如文章、产品、图集等),非常灵活。
下面我将详细讲解这两种方法,并提供代码示例。

(图片来源网络,侵删)
使用织梦自带的搜索表单(最简单)
这是最直接的方法,直接调用系统内置的搜索模块,它会把用户带到 /plus/search.php 这个搜索结果页面。
操作步骤:
- 登录你的织梦后台。
- 进入“模板” -> “默认模板管理”。
- 找到你当前正在使用的首页模板文件,通常是
index.htm。 - 在你希望显示搜索框的位置(通常是网站头部的右侧),插入以下代码。
代码示例:
<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步:创建自定义搜索表单

(图片来源网络,侵删)
- 在后台首页,点击“核心” -> “自定义表单”。
- 点击“增加新自定义表单”,填写表单信息:
- 表单名称: 填一个你喜欢的名字,
site_search。 - 目录名: 系统会自动生成,一般不用改。
- 列表命名规则: 可以留空或自定义,
search_{page}.htm。 - 列表行数: 填
10或你希望每页显示的结果数。 - 表单说明: 可以简单写“站内搜索”。
- 默认排序: 选择按
id降序。
- 表单名称: 填一个你喜欢的名字,
- 点击“提交”按钮创建。
第2步:添加搜索字段
- 在刚刚创建的自定义表单管理页面,点击“字段管理”。
- 点击“添加新字段”。
- 添加以下字段:
- 字段名称:
keyword(必须) - 字段别名:
搜索关键词 - 字段类型:
单行文本 - 前台表单调用:
是 - 其他选项: 保持默认即可。
- 字段名称:
- 点击“保存”,不需要添加其他字段了。
第3步:生成搜索列表模板
- 在自定义表单管理页面,点击“生成列表”。
- 系统会提示你选择模板,点击“生成”即可,这会创建一个搜索结果页模板,通常位于
/templets/default/site_search.htm。 - 打开这个
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。
- 如何找到ID?回到后台“自定义表单”列表,鼠标悬停在你创建的表单名称上,浏览器状态栏会显示链接,如
name="channeltype":指定搜索的模型。1:文章模型。2:图集模型。3:下载模型。- ...以此类推,如果你想让用户搜索所有内容,可以删除这个隐藏域。
- 注意: 这个参数只对
arclist标签有效,如果你在site_search.htm中想搜索多个模型,可以删除channeltype,然后在arclist标签里用channelid='1,2,3'的方式指定。
总结与建议
| 特性 | 方法一 (自带搜索) | 方法二 (自定义表单) |
|---|---|---|
| 实现难度 | 非常简单 | 中等 |
| 样式自定义 | 差,受限于CSS | 优秀,完全可控 |
| 搜索范围 | /关键词/全文) | 灵活(可指定模型、栏目等) |
| 用户体验 | 跳转到新页面 | 可在同一页面或固定区域显示结果 |
| 推荐度 | ⭐⭐ (适合快速实现) | ⭐⭐⭐⭐⭐ (推荐,功能强大) |
对于大多数网站,我强烈推荐使用方法二,虽然前期设置稍微复杂一点,但它带来的灵活性和更好的用户体验是值得的,你可以通过CSS轻松地将搜索框美化成你想要的样子,并且可以精确控制搜索的范围,让搜索结果更精准。
