- 推荐方法:修改PHP源文件(最直接、最常用)
- 进阶方法:使用JS回调(更灵活,适合AJAX提交)
下面我将详细介绍这两种方法。

修改PHP源文件(最直接)
这是最直接有效的方法,直接修改处理表单提交的核心文件。
第1步:找到并打开处理文件
你需要找到处理自定义表单提交的PHP文件,这个文件通常位于 /plus/ 目录下。
文件路径:/plus/diy.php
使用FTP或主机管理面板,下载这个文件到你的电脑上,然后用代码编辑器(如VS Code, Sublime Text, Dreamweaver)打开它。

第2步:定位关键代码
在 diy.php 文件中,找到处理完数据插入数据库后的逻辑部分,通常在文件末尾,你会看到类似这样的代码:
// ... 前面的代码是验证和处理逻辑 ...
// 保存到主表
if($diy->table == $diy->tableadd)
{
if($id = $diy->add($dede_fieldarr, $dede_addvalue))
{
showmsg('发布成功,请等待管理员审核!', $GOTO);
}
}
else
{
if($diy->add($dede_fieldarr, $dede_addvalue))
{
showmsg('发布成功,请等待管理员审核!', $GOTO);
}
}
这里的 showmsg() 函数就是用来显示提示信息并跳转的,第二个参数 $GOTO 就是跳转的目标URL。
第3步:修改跳转地址
我们需要修改这个 $GOTO 变量,让它指向我们想要的页面。
情况1:跳转到指定页面(/thankyou.html)

这是最常见的需求,直接给 $GOTO 赋值一个你准备好的页面URL即可。
// 在 showmsg() 函数之前,添加或修改如下代码
$GOTO = '/thankyou.html'; // 设置为你想要跳转的页面,可以是任意URL
// ... 原有的 showmsg 代码 ...
showmsg('发布成功,感谢您的留言!', $GOTO);
说明:
/thankyou.html这个页面需要你自己在DedeCMS后台新建一个单页文档,并填入“感谢您的留言”等内容。- 提示信息
'发布成功,感谢您的留言!'也可以根据你的喜好修改。
情况2:返回到表单所在的页面
如果你希望用户提交后刷新当前页面,或者停留在当前页面,可以这样设置:
// 在 showmsg() 函数之前,添加或修改如下代码
$GOTO = 'javascript:history.go(-1)'; // 返回上一页
// ... 原有的 showmsg 代码 ...
showmsg('发布成功,感谢您的留言!', $GOTO);
或者,你也可以获取当前页面的URL:
// 在 showmsg() 函数之前,添加或修改如下代码
$GOTO = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; // 获取当前页URL
// ... 原有的 showmsg 代码 ...
showmsg('发布成功,感谢您的留言!', $GOTO);
情况3:跳转到首页
// 在 showmsg() 函数之前,添加或修改如下代码
$GOTO = '/'; // 跳转到网站根目录,即首页
// ... 原有的 showmsg 代码 ...
showmsg('发布成功,感谢您的留言!', $GOTO);
第4步:保存并上传
修改完成后,保存 diy.php 文件,然后通过FTP上传回服务器的 /plus/ 目录,覆盖原文件即可。
至此,方法一操作完成。 这是最简单、最稳定的方法。
使用JS回调(更灵活)
这种方法不修改PHP核心文件,而是通过在前端表单中添加JavaScript代码来实现跳转,它特别适合需要动态跳转(比如根据提交内容跳转到不同页面)或者使用AJAX提交的场景。
第1步:修改JS代码
在DedeCMS后台生成自定义表单时,系统会自动在表单代码中加入一段JS,你需要找到并修改它。
找到你自定义表单的模板文件(通常在 /templets/plus/ 目录下,文件名是你建表单时填写的模板名,如 diyform.htm)。
在表单代码的底部,找到类似这样的 onsubmit 事件处理代码:
<form ... onsubmit='return _check allowhaha(this)' enctype="multipart/form-data">
_check allowhaha 是一个默认的验证函数,我们需要在这里加入我们的跳转逻辑。
修改方案:
将 onsubmit 的值修改为一个自定义的函数名,return submitForm(this)。
<form ... onsubmit='return submitForm(this)' enctype="multipart/form-data">
第2步:添加JS函数
在同一个模板文件中(diyform.htm),找到 <head> 标签内或页面底部的 <script> 区域,添加如下JavaScript代码:
<script type="text/javascript">
function submitForm(form) {
// 表单验证逻辑(如果需要的话)
// ...
// 使用 AJAX 提交表单,这样页面不会刷新
$.ajax({
url: form.action,
type: 'POST',
data: $(form).serialize(),
success: function(response) {
// 提交成功后的回调
alert('提交成功,感谢您的留言!'); // 弹出提示
window.location.href = '/thankyou.html'; // 跳转到指定页面
// 或者返回上一页
// window.history.back();
},
error: function() {
alert('提交失败,请稍后重试!');
}
});
// 必须 return false; 来阻止表单的默认提交行为
return false;
}
</script>
说明:
- 这个方法依赖于jQuery库,如果你的网站没有加载jQuery,需要在
<script>标签前先引入jQuery,<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
form.action会自动获取表单的action属性值,也就是/plus/diy.php。$(form).serialize()会将表单数据序列化,方便提交。return false;是关键,它告诉浏览器不要执行默认的表单提交(页面跳转),从而让我们自己的AJAX代码得以执行。
第3步:保存模板
保存修改后的 diyform.htm 文件,然后去DedeCMS后台的【自定义表单】管理中,点击你对应的表单,点击【更新】或【生成】按钮,使模板生效。
至此,方法二操作完成。
总结与对比
| 特性 | 方法一 (修改PHP) | 方法二 (JS回调) |
|---|---|---|
| 优点 | 简单直接,无需额外知识。 稳定可靠,不依赖前端环境。 符合DedeCMS原生逻辑。 |
灵活性高,可实现复杂逻辑(如AJAX)。 不修改核心文件,升级DedeCMS时不易丢失。 可提供更好的用户体验(如无刷新提交)。 |
| 缺点 | 修改了核心文件,升级DedeCMS时可能被覆盖。 功能相对固定。 |
需要一定的JavaScript和AJAX知识。 依赖jQuery等库。 如果用户禁用JS,功能可能失效。 |
| 适用场景 | - 绝大多数常规需求,特别是简单的页面跳转。 - 不想接触前端代码的开发者。 |
- 需要无刷新提交、动态跳转等高级功能。 - 希望保持核心文件纯净,便于后期维护。 |
对于大多数用户来说,方法一已经完全够用且是最优选择,只有在有特殊交互需求时,才推荐使用方法二。
