这可以通过修改DedeCMS的源代码来实现,核心思路是:在处理留言提交的PHP文件中,获取用户提交留言前的页面URL,然后使用这个URL进行页面跳转。

下面是详细的操作步骤,分为两种情况:
针对留言本模块(guestbook.php)
这是最常见的需求,用户在网站的留言本页面留言后,希望返回到留言本页面本身,而不是跳转到其他地方。
操作步骤:
-
找到文件 登录你的网站FTP或主机管理系统,找到并下载
plus/guestbook.php文件。
(图片来源网络,侵删) -
修改代码 用代码编辑器(如Notepad++, VS Code, Dreamweaver)打开
guestbook.php文件。 -
定位关键代码 在文件中找到处理留言提交的代码段,通常会有一个类似
if($dopost == 'send')的判断。 -
修改跳转逻辑 找到类似这样的代码(可能略有不同,但结构相似):
// ... 省略其他验证代码 ... if($dopost == 'send') { // ... 省略插入数据库的代码 ... // 原来的代码可能是直接跳转到留言列表页 // ShowMsg("留言成功!", "guestbook.php"); // exit(); }将其中的
ShowMsg("留言成功!", "guestbook.php");这一行,修改为使用dede_geturl()函数来获取并返回当前页面。
(图片来源网络,侵删)修改后的代码如下:
// ... 省略其他验证代码 ... if($dopost == 'send') { // ... 省略插入数据库的代码 ... // 使用 dede_geturl() 获取当前页面URL,并实现返回 $gourl = dede_geturl(); ShowMsg("留言成功,正在返回...", $gourl, 0, 2000); exit(); }代码解释:
$gourl = dede_geturl();:这行代码调用DedeCMS内置的dede_geturl()函数,它会智能地获取用户提交留言前的页面URL。ShowMsg("留言成功,正在返回...", $gourl, 0, 2000);:这行代码显示一个成功提示信息,并跳转到$gourl变量所指定的URL(也就是原页面),参数0表示不显示“继续”按钮,2000表示2秒后自动跳转。
-
保存文件 修改完成后,保存
guestbook.php文件,并重新上传到你的服务器上,覆盖原文件。
针对文章页或其他页面的留言框
留言框是嵌入在文章页面(article_article.php)或者自定义页面里的,这种情况下,用户提交留言后,自然就希望返回到文章页本身。
操作步骤:
这种情况的修改与情况一类似,但修改的文件不同。
-
找到文件 根据你的网站结构,找到处理留言提交的核心文件,这个文件通常是
plus/feedback_ajax.php(用于AJAX提交)或者plus/feedback.php(用于普通表单提交),在较新的DedeCMS版本中,feedback_ajax.php更为常用。 -
修改代码 同样,用代码编辑器打开这个文件(
plus/feedback_ajax.php)。 -
定位并修改跳转逻辑 在文件中找到处理
send操作的代码段,修改ShowMsg函数的第二个参数(跳转URL)。修改前可能类似这样:
if($dopost == 'send') { // ... 省略验证和插入数据库的代码 ... ShowMsg("发送成功!", "-1"); exit(); }修改后的代码如下:
if($dopost == 'send') { // ... 省略验证和插入数据库的代码 ... // 同样使用 dede_geturl() 获取当前页面URL $gourl = dede_geturl(); ShowMsg("发送成功,正在返回...", $gourl, 0, 2000); exit(); }代码解释:
- 逻辑和情况一完全一样,通过
dede_geturl()获取来源页,然后跳转回去。 - 如果原来的代码是
ShowMsg(..., "-1");,-1通常表示返回上一页,但为了确保100%准确和可控,使用dede_geturl()是更规范的方法。
- 逻辑和情况一完全一样,通过
-
保存文件 保存修改后的文件并上传到服务器覆盖原文件。
重要注意事项
-
备份!备份!备份! 在修改任何核心文件之前,务必备份原始文件,这样如果修改后出现问题,你可以快速恢复。
-
文件权限 修改并上传文件后,确保其文件权限设置正确(通常是
644),如果权限不正确,可能会导致文件无法正常读写。 -
缓存问题 修改后,如果页面没有立即生效,可以尝试清除浏览器缓存和DedeCMS的缓存(在后台的“系统” -> “SQL命令行工具” -> “一键更新网站”中执行)。
-
dede_geturl()函数的兼容性dede_geturl()是DedeCMS的一个常用函数,兼容性很好,但如果你的网站是高度定制或者二次开发的版本,可以尝试用$_SERVER['HTTP_REFERER']作为备选方案,但前者更可靠。// 备选方案,使用 HTTP_REFERER if (isset($_SERVER['HTTP_REFERER'])) { $gourl = $_SERVER['HTTP_REFERER']; } else { $gourl = "guestbook.php"; // 如果获取不到,则默认跳转到留言本 }
通过以上步骤,你就可以轻松实现DedeCMS留言板提交后返回原页面的功能了。
