活力39167
在线时间13434 小时
阅读权限200
管理员
自由的灵魂
- 积分
- 106811
- 主题
- 5597
- 回帖
- 26608
- 注册时间
- 2003-4-10
- 最后登录
- 2026-8-11
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
[2026-07-06] [修复] [公告页面标题重复] - 修复公告页面标题显示重复及HTML代码问题
标签:标题优化 SEO 公告页面 代码修改
1、问题缘起
在检查论坛公告页面(forum.php?mod=announcement&id=35)的源码时,发现页面标题存在重复现象:
- <title>点拨论坛,菜鸟家园 - 点拨论坛,菜鸟家园</title>
复制代码
同时,修改之后若原公告标题中包含 HTML 标签(<b>、<font>)会被直接输出到页面标题中,影响浏览器标签页显示和搜索引擎索引。
问题表现:
- 标题重复:站点名称 - 站点名称
- HTML 代码外露:标题中包含 <b>、<font> 等标签
2、解决方案
(1)简要技术分析:
Discuz! 页面标题由 header_common.htm 模板中的 $navtitle 变量控制。公告页面 forum_announcement.php 未设置 $navtitle,导致模板使用默认的 $_G['setting']['bbname'] 作为标题,造成重复。通过在该文件中为公告页面设置 $navtitle,并使用 strip_tags() 过滤 HTML 标签,即可解决。
(2)修改文件列表:
| 操作 | 文件路径 | | 修改 | /www/wwwroot/www.dianbo.org/source/module/forum/forum_announcement.php |
(3)关键代码段:
修改前:
- $annid = isset($_GET['id']) ? intval($_GET['id']) : 0;
- include template('forum/announcement');
复制代码
修改后:
- $annid = isset($_GET['id']) ? intval($_GET['id']) : 0;
- // 设置页面标题
- if (!empty($announcelist)) {
- if ($annid && !empty($announcelist[0]['subject'])) {
- $navtitle = strip_tags($announcelist[0]['subject']);
- } else {
- $navtitle = lang('forum/misc', 'announcement');
- }
- }
- include template('forum/announcement');
复制代码
3、最终实现效果
| 场景 | 修改前 | 修改后 | | 单条公告标题 | 点拨论坛,菜鸟家园 - 点拨论坛,菜鸟家园 | 公告标题 - 点拨论坛,菜鸟家园 | | 公告列表标题 | 点拨论坛,菜鸟家园 - 点拨论坛,菜鸟家园 | 公告 - 点拨论坛,菜鸟家园 | | 公告含 HTML 标签 | <title><b><font color="#FF6666">不要拒收...</title> | <title>不要拒收论坛通知邮件! (点此查看建议做法) - 点拨论坛,菜鸟家园</title> |
4、重要技术沉淀
踩坑点:
| 踩坑 | 正确做法 | | 公告标题直接输出到 $navtitle,导致 HTML 代码外露 | 使用 strip_tags() 过滤 HTML 标签后再赋值 | | header_common.htm 会默认使用站名作为标题 | 在页面文件中显式设置 $navtitle,覆盖默认值 | | 未区分单条公告和公告列表的标题 | 通过 $annid 判断当前是单条公告还是列表,分别设置不同标题 |
相关文件:
- header_common.htm 中的标题生成逻辑:
- <title><!--{if !empty($navtitle)}-->$navtitle <!--{/if}--><!--{if empty($nobbname)}-->- $_G['setting']['bbname']<!--{/if}--></title>
复制代码
5、进一步优化可能性
- 其他页面(如主题列表、帖子内容页)的标题格式检查,确保无重复或异常
- 后台 SEO 设置中为公告页面增加独立的标题格式配置项
- 统一为所有动态页面设置规范的标题格式
|
|