默认情况下,织梦的搜索结果页面 plus/search.php 会通过 JavaScript 的 window.open() 方法在新窗口或新标签页中打开,要修改这个行为,我们需要找到并修改相关的代码。

这个功能主要涉及到两个文件:
plus/search.php:这是搜索的核心处理文件,它包含了打开新窗口的JavaScript代码。templets/default/search.htm:这是用户在前台看到的搜索框页面模板文件,用于提交搜索请求。
修改核心搜索文件 (推荐)
这是最直接、最根本的修改方法,可以一劳永逸地解决问题。
操作步骤:
-
登录FTP或主机控制面板,使用文件管理器找到并打开织梦网站的根目录。
(图片来源网络,侵删) -
定位文件:进入
plus文件夹,找到search.php文件。 -
编辑文件:使用代码编辑器(如VS Code, Sublime Text, 或主机自带的编辑器)打开
search.php。 -
查找并修改代码: 在文件中,搜索
window.open关键字,你会找到类似下面这样的代码段(可能在第200行左右,具体行数可能因版本不同而异):// ... 其他代码 ... if(empty($keyword)) { ShowMsg('关键字不能为空!','-1'); exit(); } $typeArr = array('article', 'archive', 'specification'); $type = isset($type) && in_array($type, $typeArr) ? $type : 'article'; // 关键字替换 $keyword = RepPostVar($keyword); // 搜索结果链接 $searchUrl = $cfg_cmspath."/plus/search.php?searchtype=titlekeyword&keyword=".urlencode($keyword); // 跳转到搜索结果页 echo "<script>window.location.href='".$searchUrl."';</script>"; // 或者是下面这种新窗口打开的代码,我们需要注释掉或替换它 // echo "<script>window.open('".$searchUrl."');</script>"; exit(); // ... 其他代码 ... -
进行修改: 你会看到两处关键的JavaScript代码:
(图片来源网络,侵删)- 旧版织梦(较常见):
echo "<script>window.open('".$searchUrl."');</script>"; - 新版织梦(如DedeCMS V5.7/V5.8):
echo "<script>location.href='".$searchUrl."';</script>";
或者
echo "<script>window.location.href='".$searchUrl."';</script>";
修改方法:
- 如果你的代码是
window.open(...),直接将其修改为location.href或window.location.href。 - 如果你的代码已经是
location.href(...),那么恭喜你,你的版本已经是默认在同窗口打开的了,无需修改。
修改后的代码示例:
// 跳转到搜索结果页 (修改后) echo "<script>window.location.href='".$searchUrl."';</script>"; // 或者更简洁的写法 // echo "<script>location.href='".$searchUrl."';</script>";
- 旧版织梦(较常见):
-
保存文件:保存对
search.php文件的修改,然后上传回服务器覆盖原文件。
完成以上步骤后,用户在前台点击搜索时,结果就会在当前窗口中显示了。
修改搜索框模板文件 (备选方案)
如果你不想修改核心PHP文件,或者只想针对特定模板下的搜索框进行修改,可以采用这个方法。
操作步骤:
-
定位文件:进入
templets文件夹,找到你当前正在使用的模板文件夹(default),然后打开search.htm文件。 -
查找表单代码:在
search.htm中,找到搜索框的<form>标签,它看起来通常是这样的:<form name="formsearch" action="/plus/search.php" target="_blank"> <div class="form"> <h4>搜索</h4> <input type="hidden" name="kwtype" value="0" /> <input name="q" type="text" class="search-keyword" id="search-keyword" placeholder="请输入关键字" /> <select name="searchtype" class="search-option" id="search-option"> <option value="titlekeyword" selected='1'>智能模糊搜索</option> <option value="keyword">仅搜索关键字</option> </select> <button type="submit" class="search-submit">搜索</button> </div> </form> -
修改
target属性: 找到<form>标签中的target="_blank"属性。target="_blank":表示在新窗口/新标签页中打开。target="_self":表示在当前窗口中打开。- 删除
target属性:如果完全移除target属性,浏览器默认行为通常也是在当前窗口打开。
修改后的代码示例:
<!-- 修改前 --> <form name="formsearch" action="/plus/search.php" target="_blank"> <!-- 修改后 (选择其中一种方式) --> <!-- 方式A:指定在当前窗口打开 --> <form name="formsearch" action="/plus/search.php" target="_self"> <!-- 方式B:移除target属性,使用浏览器默认行为 --> <form name="formsearch" action="/plus/search.php">
-
保存文件:保存对
search.htm文件的修改,然后上传回服务器。
总结与对比
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
修改 search.php |
一劳永逸,全站所有搜索都生效,是根本的解决方案。 | 需要修改核心PHP文件,对新手来说可能稍显复杂。 | 强烈推荐,适用于所有希望统一搜索行为的网站。 |
修改 search.htm |
简单直观,只修改模板文件,不影响核心程序。 | 只能修改特定模板下的搜索框,如果网站有多个模板,每个都要改一遍。 | 只想修改特定页面搜索行为的场景,或者不想动核心文件时使用。 |
对于绝大多数用户来说,方法一 是最佳选择,它解决了问题的根源,让你的网站行为更加统一和专业。
重要提示:在修改任何文件之前,请务必备份原始文件,以防修改后出现意外问题,可以快速恢复。
