如何修改DedeCMS的提示信息?

99ANYc3cd6
预计阅读时长 21 分钟
位置: 首页 DEDE建站 正文

下面我将从最简单直接的方法最彻底、最推荐的方法,为你详细讲解如何修改DedeCMS的提示信息。


直接修改语言包文件(最直接,但不推荐)

这是最简单粗暴的方法,适用于快速修改单个提示。

  1. 找到文件: DedeCMS的提示信息存放在语言包文件中,路径通常是: /include/lang/zh-cn/ 在这个目录下,你会看到 common.inc.phplogin.msg.phpadmin.msg.php 等文件。

  2. : 用代码编辑器(如 VS Code, Sublime Text, Notepad++)打开对应的文件。

    • login.msg.php:包含登录相关的提示,如“用户不存在”、“密码错误”等。
    • common.inc.php:包含一些通用提示,如“操作成功”、“操作失败”等。

    在文件中找到你想要修改的文字,直接替换即可。

    示例: 在 login.msg.php 中,你可能找到这样一行:

    $_LANG['login_error_password'] = "密码错误,请重新输入!";

    你可以将其修改为:

    $_LANG['login_error_password'] = "哎呀,密码输错啦,再想想?";
  3. 缺点

    • 不灵活:每次修改都需要登录FTP,修改文件,非常麻烦。
    • 升级麻烦:当你升级DedeCMS版本时,这些文件会被覆盖,你的修改会丢失,需要重新修改。
    • 硬编码:修改后的提示无法轻易地添加HTML标签(如换行、加粗、自定义样式),因为很多地方是直接 echo 出来的。

修改 showmsg() 函数(推荐,最灵活)

这是最推荐、最专业的方法,通过修改核心的 showmsg() 函数,你可以统一控制所有提示信息的样式、内容和跳转逻辑,一劳永逸。

  1. 找到文件: 打开 /include/helpers/assist.helper.php 文件。

  2. 定位 showmsg() 函数: 在这个文件中找到 showmsg() 函数的定义,这个函数是整个DedeCMS系统的提示信息核心。

  3. 修改函数: 你可以修改这个函数,让它加载你自定义的提示模板,这是最优雅的方式。

    修改后的 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();
        }
    }
  4. 创建自定义提示模板: 在你的模板目录 /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默认的简陋提示样式,并且后续升级网站时也基本不受影响。

-- 展开阅读全文 --
头像
dede文章定时发布如何设置?
« 上一篇 今天
dede图片无法上传
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

目录[+]