这个错误提示意味着,当用户通过站内搜索功能搜索关键词时,DedeCMS 找不到用来展示搜索结果的模板文件。

(图片来源网络,侵删)
下面我将为你详细分析可能的原因,并提供从易到难的解决方案。
问题根源分析
要解决这个问题,首先要明白 DedeCMS 搜索的原理:
- 用户在前台输入关键词并点击搜索。
- 请求被发送到
plus/search.php这个脚本文件。 search.php脚本会读取系统配置,获取 搜索模板的路径和文件名。- 它会加载这个模板文件,并将搜索结果数据填充进去,最终生成一个 HTML 页面展示给用户。
“模板不存在”的错误,通常发生在第 3 或第4 步,即 系统配置的模板路径指向了一个不存在的文件。
解决方案(请按顺序尝试)
检查并创建默认的搜索模板(最常见原因)
DedeCMS 默认的搜索模板文件是 default/search.htm,这个文件可能被你误删了,或者从未创建过。

(图片来源网络,侵删)
操作步骤:
-
登录你的网站后台 (
你的域名/dede/)。 -
在左侧菜单栏找到并点击 【模板】 -> 【默认模板管理】。
-
在模板列表中找到 【搜索页面模板】 这一行。
(图片来源网络,侵删) -
查看 【模板目录】 和 【默认模板】 这两列。
- 模板目录:通常会是
/templets/default/或你自定义的模板文件夹。 - 默认模板:文件名应该是
search.htm。
- 模板目录:通常会是
-
检查文件是否存在:
- 通过 FTP 工具(如 FileZilla)或你的主机控制面板的文件管理器,登录到网站根目录。
- 进入
templets/default/文件夹(或你自定义的模板文件夹)。 - 查看是否存在
search.htm文件。90% 的情况下,这个文件是不存在的。
-
创建模板文件:
- 如果文件不存在,最简单的方法是找一个 DedeCMS 的官方安装包,从里面解压出
templets/default/search.htm文件,然后上传到你的网站对应目录。 - 如果你手头没有安装包,也可以手动创建一个,在你的模板文件夹里新建一个文件,命名为
search.htm,然后复制并粘贴以下最基础的代码进去:
<!DOCTYPE html> <html> <head> <meta charset="utf-8">{dede:global name='keyword' function='RemoveXSS(@me)'/}_ Powered by DedeCMS</title> <meta name="description" content="搜索{dede:global name='keyword' function='RemoveXSS(@me)'/}的结果页面" /> <link href="/templets/default/style/dedecms.css" rel="stylesheet" type="text/css" /> </head> <body class="search"> <div class="header"> <!-- 这里可以放你的网站头部代码 --> </div> <div class="main"> <div class="search_form"> <form name="formsearch" action="{dede:global name='cfg_phpurl'/}/search.php"> <input type="hidden" name="kwtype" value="0" /> <input type="hidden" name="searchtype" id="searchtype" value="titlekeyword" /> <input type="text" name="q" class="search-keyword" id="search-keyword" placeholder="请输入搜索关键词"> <button type="submit" class="search-submit">搜索</button> </form> </div> <div class="search_result"> <h3>搜索 "<strong>{dede:global name='keyword' function='RemoveXSS(@me)'/}</strong>" 的结果</h3> {dede:list pagesize='10'} <div class="result-item"> <h4><a href="[field:arcurl/]">[field:title/]</a></h4> <p>[field:description function='cn_substr(@me, 200)'/]...</p> <div class="info">发布时间:[field:pubdate function='MyDate("Y-m-d H:i",@me)'/] 来源:[field:typename/] 作者:[field:writer/]</div> </div> {/dede:list} <!-- 分页标签 --> <div class="page"> {dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'} {/dede:pagelist} </div> </div> </div> <div class="footer"> <!-- 这里可以放你的网站底部代码 --> </div> </body> </html> - 如果文件不存在,最简单的方法是找一个 DedeCMS 的官方安装包,从里面解压出
-
创建好文件后,回到后台 【生成】 -> 【更新主页HTML】,然后去前台测试一下搜索功能。
检查后台模板路径和文件名配置
search.htm 文件是存在的,但后台配置的路径或文件名写错了。
操作步骤:
- 再次进入后台 【模板】 -> 【默认模板管理】。
- 找到 【搜索页面模板】。
- 仔细核对 【模板目录】 和 【默认模板】。
- 模板目录:必须确保这个目录存在,并且有正确的读写权限(通常是 755)。
- 默认模板:文件名必须是
search.htm,并且大小写要完全一致(在 Linux 服务器上,Search.htm和search.htm是两个不同的文件)。
- 如果发现配置错误,请修改为正确的路径和文件名,然后点击 【更新】 按钮保存。
检查目录和文件权限
如果你的网站服务器是 Linux,文件权限问题也可能导致模板无法被读取。
操作步骤:
- 通过 FTP 或文件管理器,确保
templets文件夹、default文件夹(或你自定义的模板文件夹)以及search.htm文件的权限设置正确。 - 文件夹权限设置为 755,文件权限设置为 644。
- 755 (drwxr-xr-x):所有者有读写执行权限,组用户和其他用户有读和执行权限。
- 644 (-rw-r--r--):所有者有读写权限,组用户和其他用户只有读权限。
- 你可以在 FTP 软件(如 FileZilla)的文件属性中修改,或者在主机控制面板的文件管理器中修改。
检查 plus/search.php 文件本身
在极少数情况下,plus/search.php 文件可能被损坏或被黑客篡改,导致它无法正确读取模板配置。
操作步骤:
- 从一个干净、完整的 DedeCMS 官方安装包中,找到
plus/search.php文件。 - 用这个新的、干净的
search.php文件覆盖掉你网站服务器上旧的search.php文件。 - 覆盖后,再次测试搜索功能。
检查自定义搜索模板(如果你使用过)
如果你之前修改过搜索模板,并设置了自定义模板,但后来删除了该模板,就会出现这个错误。
操作步骤:
- 进入后台 【核心】 -> 【频道模型】 -> 模型管理】。
- 点击顶部的 【搜索配置】 按钮。
- 你可以看到所有自定义的搜索模板设置,检查是否有指向一个不存在的模板文件。
- 如果有,你可以选择删除这个错误的配置,或者将其修改为指向一个存在的模板文件(比如我们前面创建的
default/search.htm)。
总结与排查流程
当你遇到 "织梦search.php 模板不存在" 错误时,请按以下思路快速排查:
- 首要检查:通过 FTP 查看网站
templets/default/目录下是否存在search.htm文件。这是最最常见的原因。 - 后台核对:进入后台【默认模板管理】,检查【搜索页面模板】的路径和文件名是否正确。
- 权限确认:确保
templets目录和search.htm文件有正确的 Linux 权限(755/644)。 - 文件覆盖:如果以上都正常,尝试用官方包里的
plus/search.php文件覆盖一下。 - 自定义检查:如果你玩过高级功能,去【搜索配置】里看看有没有自定义的、已失效的模板路径。
按照这个流程,99% 的情况下都能解决你的问题,希望这个详细的指南能帮到你!
