下面我将从最简单直接的方法到最彻底、最推荐的方法,为你详细讲解如何修改DedeCMS的提示信息。
直接修改语言包文件(最直接,但不推荐)
这是最简单粗暴的方法,适用于快速修改单个提示。
-
找到文件: DedeCMS的提示信息存放在语言包文件中,路径通常是:
/include/lang/zh-cn/在这个目录下,你会看到common.inc.php、login.msg.php、admin.msg.php等文件。 -
: 用代码编辑器(如 VS Code, Sublime Text, Notepad++)打开对应的文件。
login.msg.php:包含登录相关的提示,如“用户不存在”、“密码错误”等。common.inc.php:包含一些通用提示,如“操作成功”、“操作失败”等。
在文件中找到你想要修改的文字,直接替换即可。
示例: 在
login.msg.php中,你可能找到这样一行:$_LANG['login_error_password'] = "密码错误,请重新输入!";
你可以将其修改为:
$_LANG['login_error_password'] = "哎呀,密码输错啦,再想想?";
-
缺点:
- 不灵活:每次修改都需要登录FTP,修改文件,非常麻烦。
- 升级麻烦:当你升级DedeCMS版本时,这些文件会被覆盖,你的修改会丢失,需要重新修改。
- 硬编码:修改后的提示无法轻易地添加HTML标签(如换行、加粗、自定义样式),因为很多地方是直接
echo出来的。
修改 showmsg() 函数(推荐,最灵活)
这是最推荐、最专业的方法,通过修改核心的 showmsg() 函数,你可以统一控制所有提示信息的样式、内容和跳转逻辑,一劳永逸。
-
找到文件: 打开
/include/helpers/assist.helper.php文件。 -
定位
showmsg()函数: 在这个文件中找到showmsg()函数的定义,这个函数是整个DedeCMS系统的提示信息核心。 -
修改函数: 你可以修改这个函数,让它加载你自定义的提示模板,这是最优雅的方式。
修改后的
showmsg()函数示例:if (! function_exists('showmsg')) { function showmsg($msg, $gourl = '-1', $onlymsg = 0, $limittime = 0) { // 1. 定义模板路径 $tplfile = DEDETEMPLATE . '/plus/showmsg.htm'; // 2. 如果自定义模板不存在,则使用系统默认的 if (!file_exists($tplfile)) { $tplfile = DEDEROOT . '/templets/system/showmsg.htm'; } // 3. 准备模板变量 $dtp = new DedeTemplate(); $dtp->LoadTemplate($tplfile); $dtp->Display(); // 4. 将变量传递给模板 // 你可以在这里添加任何你想要的变量 $dtp->SetVar('msg', $msg); $dtp->SetVar('gourl', $gourl); $dtp->SetVar('onlymsg', $onlymsg); $dtp->SetVar('limittime', $limittime); // 5. 如果是仅显示消息,则直接输出并结束 if ($onlymsg == 1) { echo $msg; exit(); } // 6. 解析模板并输出 $dtp->Display(); exit(); } } -
创建自定义提示模板: 在你的模板目录
/templets/下创建一个新文件夹,plus,然后在里面创建一个文件showmsg.htm。/templets/plus/showmsg.htm文件内容示例:<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>提示信息</title> <style> body { font-family: "Microsoft YaHei", Arial, sans-serif; background-color: #f4f4f4; } .msg-box { width: 500px; margin: 100px auto; padding: 20px; background: #fff; border-radius: 8px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); text-align: center; } .msg-icon { font-size: 48px; margin-bottom: 15px; } .msg-success { color: #52c41a; } .msg-error { color: #f5222d; } .msg-info { color: #1890ff; } .msg-content { font-size: 16px; line-height: 1.6; margin-bottom: 20px; } .msg-gourl { display: inline-block; padding: 8px 20px; background: #1890ff; color: #fff; text-decoration: none; border-radius: 4px; } </style> </head> <body> <div class="msg-box"> <?php // 根据消息内容判断类型,并设置不同的图标和样式 $icon_class = 'msg-info'; if (strpos($msg, '成功') !== false) { $icon_class = 'msg-success'; } elseif (strpos($msg, '错误') !== false || strpos($msg, '失败') !== false) { $icon_class = 'msg-error'; } ?> <div class="msg-icon <?php echo $icon_class; ?>"> <?php echo $icon_class == 'msg-success' ? '✓' : ($icon_class == 'msg-error' ? '✕' : 'i'); ?> </div> <div class="msg-content"><?php echo $msg; ?></div> <?php if ($gourl != '-1' && $gourl != '') { ?> <a href="<?php echo $gourl; ?>" class="msg-gourl">如果您的浏览器没有自动跳转,请点击这里</a> <?php } ?> </div> <script> // 自动跳转逻辑 <?php if ($gourl != '-1' && $gourl != '') { ?> setTimeout(function() { window.location.href = "<?php echo $gourl; ?>"; }, <?php echo $limittime > 0 ? $limittime : 3000; ?>); <?php } ?> </script> </body> </html>
方法二的优点:
- 一劳永逸:所有提示信息都会自动应用你的新模板。
- 完全可控:你可以自由设计提示框的样式、内容、图标和跳转逻辑。
- 不影响升级:你只修改了
assist.helper.php中的函数调用,并没有修改核心逻辑,升级时风险较低(但升级后最好检查一下该文件是否被覆盖)。 - 面向未来:这是最符合现代开发思想的方式。
使用JS弹窗(不推荐,仅作了解)
有些用户喜欢用 alert() 弹窗来显示提示,这可以通过修改 showmsg() 函数实现,但极度不推荐,因为会打断用户操作,体验很差。
如果你坚持要这么做,可以这样修改 assist.helper.php 中的 showmsg() 函数:
if (! function_exists('showmsg'))
{
function showmsg($msg, $gourl = '-1', $onlymsg = 0, $limittime = 0)
{
if ($onlymsg == 1) {
echo $msg;
exit();
}
// 使用JS弹窗
echo "<script>alert('".$msg."');";
if ($gourl != '-1') {
echo "window.location.href='".$gourl."';";
}
echo "</script>";
exit();
}
}
为什么不推荐:
- 打断用户:强制弹窗会打断用户的浏览流程,非常烦人。
- 样式丑陋:不同浏览器下
alert()的样式千差万别,无法美化。 - 功能单一:无法承载复杂的内容,如图片、链接等。
总结与建议
| 方法 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|
| 修改语言包 | 简单直接,无需懂代码 | 不灵活,升级后失效,无法美化样式 | ⭐ (仅用于临时修改) |
修改 showmsg() 函数 |
一劳永逸,完全可控,样式美观,不影响升级 | 需要一定的代码能力和文件结构理解 | ⭐⭐⭐⭐⭐ (强烈推荐) |
| 使用JS弹窗 | 实现简单 | 体验极差,样式丑陋,不专业 | ⭐ (不推荐) |
给你的最终建议:
直接使用方法二,虽然前期需要你花一点时间创建模板和修改 assist.helper.php 文件,但这是最规范、最灵活、最能提升网站体验的解决方案,一旦设置好,你将永远告别DedeCMS默认的简陋提示样式,并且后续升级网站时也基本不受影响。
