活力39282
在线时间13640 小时
阅读权限200
管理员
自由的灵魂
- 积分
- 107434
- 主题
- 5630
- 回帖
- 26661
- 注册时间
- 2003-4-10
- 最后登录
- 2026-10-2
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
1、问题缘起
收到用户反馈,回帖被屏蔽时收到的邮件通知文案为“您的帖子被屏蔽”,与主题被屏蔽时的文案相同,无法区分被操作对象是主题还是回帖。用户期望在邮件中明确体现“回帖”身份,并显示所属的主题标题。
2、解决方案
(1)简要技术分析:
Discuz! 中主题和回帖的管理操作由两个独立函数处理,在回帖函数中删除多余的主题判断逻辑,将邮件主题和正文中的“帖子”改为“回帖”,并明确显示所属主题标题。
(2)修改文件:
| 操作 | 文件路径 | | 修改 | /source/module/forum/forum_topicadmin.php |
(3)关键代码修改:
单条回帖通知(第 176-195 行):
- if ($post_count == 1) {
- $post = $user_posts[0];
- $thread_info = C::t('forum_thread')->fetch_thread($post['tid']);
- $subject_title = $thread_info ? $thread_info['subject'] : '帖子';
- $post_url = $_G['siteurl'] . 'forum.php?mod=redirect&goto=findpost&ptid=' . $post['tid'] . '&pid=' . $post['pid'];
- $mail_subject = '您在 『' . $_G['forum']['name'] . '』 的回帖被' . $action_name;
- $mail_message = "<html><body>";
- $mail_message .= "<p>尊敬的 " . $user['username'] . ",您好:</p>";
- $mail_message .= "<p>您针对主题《" . htmlspecialchars($subject_title) . "》的回帖被执行了「" . $action_name . "」操作。</p>";
- $mail_message .= "<p>操作人:" . $_G['member']['username'] . "</p>";
- $mail_message .= "<p>操作时间:" . date('Y-m-d H:i:s') . "</p>";
- $mail_message .= "<p>查看详情:<a href="" . $post_url . "">" . $post_url . "</a></p>";
- $mail_message .= "<p>期待您继续参与社区讨论。</p>";
- $mail_message .= "</body></html>";
- }
复制代码
批量回帖通知(第 196-212 行):
- } else {
- $mail_subject = '您在 『' . $_G['forum']['name'] . '』 的 ' . $post_count . ' 个回帖被批量管理';
- $mail_message = "<html><body>";
- $mail_message .= "<p>尊敬的 " . $user['username'] . ",您好:</p>";
- $mail_message .= "<p>您在论坛发布的以下 " . $post_count . " 个回帖被执行了「" . $action_name . "」操作:</p><ul>";
- foreach ($user_posts as $post) {
- $thread_info = C::t('forum_thread')->fetch_thread($post['tid']);
- $subject_title = $thread_info ? $thread_info['subject'] : '帖子';
- $post_url = $_G['siteurl'] . 'forum.php?mod=redirect&goto=findpost&ptid=' . $post['tid'] . '&pid=' . $post['pid'];
- $mail_message .= "<li><a href="" . $post_url . "">回帖《" . htmlspecialchars($subject_title) . "》</a></li>";
- }
- $mail_message .= "</ul>";
- // ... 后续操作人、操作时间等
- }
复制代码
3、最终实现效果
| 场景 | 修改前 | 修改后 | | 单条回帖主题 | 您的帖子被屏蔽 | 您的回帖被屏蔽 | | 单条回帖正文 | 您在论坛发布的回帖《xxx》 | 您针对主题《xxx》的回帖被执行了「屏蔽」操作 | | 批量回帖主题 | X 个帖子被批量管理 | X 个回帖被批量管理 | | 批量回帖列表 | 回帖《xxx》 | 回帖《xxx》(主题标题) | | 主题操作 | 不受影响 | 保持不变 |
4、重要技术沉淀
- 职责分离:回帖函数 send_topicadmin_notification 中删除了 $post_type 判断和 $post['first'] 分支,因为主题操作已有独立的 send_topicadmin_notification_universal 函数处理,回帖函数无需处理主题数据。
- 邮件模板:回帖被屏蔽时应显示「您针对主题《xxx》的回帖」,而非笼统的「您的帖子」。
5、进一步优化
- 如需调整其他管理操作(警告、删除回帖、置顶回复)的邮件文案,可在同一函数中同步修改。
- 可考虑将邮件模板内容存入数据库,支持后台在线编辑。
|
|