要让它显示真正的管理员用户名,你需要修改一个核心文件,请按照以下步骤操作,操作前请务必备份原文件!

(图片来源网络,侵删)
问题根源
DedeCMS的留言板回复功能,在显示回复者信息时,使用了一个固定的变量 {$adminname},在很多情况下,这个变量没有被正确赋值,或者模板文件里直接写死了“管理回复”这几个字,导致无论谁回复,都只显示这固定的文本。
解决方案
修改核心PHP文件(推荐,一劳永逸)
这是最根本的解决方法,可以确保所有留言板的回复都显示正确的管理员用户名。
-
找到并打开文件 使用FTP或主机控制面板的文件管理器,找到并编辑以下文件:
/include/message/inc/inc_savereply.php -
定位关键代码 在文件中找到下面这一行代码(通常在第160行左右,具体行号可能因版本不同而略有差异):
(图片来源网络,侵删)$adminname = '管理回复';
这就是问题的根源!系统在这里把回复者姓名硬编码为了“管理回复”。
-
修改代码 将上面那行代码修改为从当前登录的session中获取管理员用户名,修改为:
$adminname = $cfg_ml->M_UserName;
这行代码会获取当前登录后台的管理员的真实用户名。
-
保存文件 保存修改后的
inc_savereply.php文件。
(图片来源网络,侵删) -
清空缓存并测试
- 登录你的DedeCMS后台。
- 进入“系统” -> “性能选项” -> “清除所有缓存”,并执行。
- 前往你的留言板,尝试以管理员身份回复一条留言。
- 回复者应该会显示你当前登录的管理员用户名(admin”或你设置的其他管理员名),而不是“管理回复”了。
修改模板文件(适用于特定模板)
如果你不想修改核心PHP文件,或者只想在某个特定的留言板模板上修改,可以尝试修改模板文件。
-
找到并打开模板文件 留言板的模板文件位于:
/templets/你的默认模板名称/plus/guestbook.htm -
查找回复者显示部分 在这个模板文件中,找到显示回复者信息的地方,通常会有类似下面这样的代码:
<div class="reply-info"> <span class="label">回复者:</span> <span class="user">管理回复</span> </div>或者使用dedecms标签:
<span>回复者:[field:adminname/]</span>
-
修改模板代码
- 如果是第一种情况(硬编码的HTML):将
<span class="user">管理回复</span>修改为<span class="user">[field:adminname/]</span>。 - 如果是第二种情况(已经是dedecms标签):确保
[field:adminname/]这个标签存在并且没有被其他文本覆盖。
- 如果是第一种情况(硬编码的HTML):将
-
保存文件并测试 保存修改后的
guestbook.htm文件,然后清空系统缓存,再到前台测试。
常见问题排查(如果修改后仍不生效)
- 缓存问题:这是最常见的原因,请务必在后台清空所有缓存,包括模板缓存。
- 文件权限:确保你修改的文件(
inc_savereply.php或guestbook.htm)有正确的写入权限(通常是644)。 - FTP模式问题:如果你用FTP软件修改文件,请确保使用“二进制”模式传输,特别是对于PHP文件。
- 代码修改错误:请仔细检查你修改的代码是否和上面给出的完全一致,包括引号、分号等,一个字符的错误都可能导致PHP语法错误,使修改失效。
- 多管理员问题:如果你有多个管理员,显示的是当前登录后台进行操作的那个管理员的用户名,这是正常行为。
- 最推荐使用方案一,因为它从根源上解决了问题,且更符合程序逻辑。
- 方案二适用于不想动核心文件,或者你的模板有特殊定制需求的情况。
按照上述步骤操作,你的DedeCMS留言板回复功能应该就能正常显示管理员的实际用户名了。
