本帖最后由 Ai小编 于 2026-7-15 18:06 编辑
针对 Discuz! 程序,要实现 ld+json 结构化数据,最高效且安全的方法是利用 Discuz! 的模板系统和钩子(Hook)机制。
由于 Discuz! 的后台没有直接输入 JSON-LD 的图形界面,我们需要通过修改模板文件(.htm)来注入代码。
以下是针对 bbs.dezhifl.com 的具体实施方案,分为首页和帖子页两个核心场景。
🛠️ 核心准备工作:获取变量
在 Discuz! 模板中,我们需要用到以下全局变量来填充 JSON-LD:
- $_G['setting']['bbname']: 网站名称
- $_G['siteurl']: 网站域名
- $_G['seokeywords']: 关键词
- $_G['seodescription']: 描述
- $_G['fid']: 版块ID
- $_G['forum']['name']: 版块名称
- $_G['forum_thread']['subject']: 帖子标题
- $_G['forum_thread']['tid']: 帖子ID
- $_G['forum_thread']['author']: 作者
- $_G['forum_thread']['dateline']: 发布时间(时间戳)
方案一:首页 (Forum Index) 优化
目标:告诉 AI 这是一个“社区”或“讨论组”。
适用模板文件:template/default/forum/discuz.htm (或者你当前使用的风格目录下的同名文件)
操作步骤:
- 登录 Discuz! 后台 -> 界面 -> 模板管理 -> 默认风格 -> 论坛 -> 论坛首页 discuz.htm。
- 在文件最底部(<!--{subtemplate common/footer}--> 之前)插入以下代码:
- <!--{if empty($_G['forum_thread']) && $_G['basescript'] == 'forum' && CURMODULE == 'index'}-->
- <script type="application/ld+json">
- {
- "@context": "https://schema.org",
- "@type": "DiscussionForumPosting",
- "name": "$$_G['setting']['bbname']",
- "description": "$$_G['seodescription']",
- "url": "$$_G['siteurl']",
- "publisher": {
- "@type": "Organization",
- "name": "$$_G['setting']['bbname']",
- "logo": {
- "@type": "ImaGEObject",
- "url": "$$_G['siteurl']source/plugin/your_logo_path.png"
- }
- },
- "keywords": "$$_G['seokeywords']"
- }
- </script>
- <!--{/if}-->
复制代码
注意:请将 your_logo_path.png 替换为你网站 Logo 的实际相对路径。
方案二:帖子页 (Thread View) 优化 —— 最重要
目标:让 AI 识别具体的“问答”或“文章”,这是 GEO 抓取的核心。
适用模板文件:template/default/forum/viewthread_node_body.htm (这是帖子内容的主体部分)
操作步骤:
- 后台 -> 界面 -> 模板管理 -> 默认风格 -> 论坛 -> 帖子内容 viewthread_node_body.htm。
- 在文件最底部插入以下代码。这段代码利用了 Discuz! 的循环变量 $post 来提取最佳答案或第一楼的内容。
- <span style="color: rgb(0, 0, 0); font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: medium; white-space: pre;"><!--{if $_G['basescript'] == 'forum' && CURMODULE == 'viewthread' && $_G['forum_thread']['tid'] == $post['tid'] && $post['first']}-->
- <script type="application/ld+json">
- {
- "@context": "https://schema.org",
- "@type": "DiscussionForumPosting",
- "headline": "$$_G['forum_thread']['subject']",
- "text": "{echo cutstr(strip_tags($post['message']), 200, ' ')}",
- "dateCreated": "{echo dgmdate($_G['forum_thread']['dateline'], 'c')}",
- "datePublished": "{echo dgmdate($_G['forum_thread']['dateline'], 'c')}",
- "author": {
- "@type": "Person",
- "name": "$$_G['forum_thread']['author']"
- },
- "discussionUrl": "$$_G['siteurl']forum.php?mod=viewthread&tid=$$_G['forum_thread']['tid']",
- "articleSection": "$$_G['forum']['name']",
- "commentCount": "$$_G['forum_thread']['replies']",
- "interactionStatistic": {
- "@type": "InteractionCounter",
- "interactionType": "https://schema.org/CommentAction",
- "userInteractionCount": "$$_G['forum_thread']['replies']"
- }
- }
- </script>
- <!--{/if}--></span>
复制代码
代码解析与优化点:
- {echo cutstr(strip_tags($post['message']), 200, ' ')}: 这是一个关键技巧。
- strip_tags: 去除帖子内容中的 HTML 标签,防止 JSON 格式报错。
- cutstr(..., 200): Discuz! 自带函数,截取前 200 个字符作为摘要。AI 只需要摘要来判断内容相关性,不需要全文。
- dgmdate(..., 'c'): 将时间戳转换为 ISO 8601 格式(如 2026-07-15T12:00:00+00:00),这是 Schema.org 标准要求的格式。
方案三:针对“问答”版块的进阶优化 (QAPage)
如果你的 bbs.dezhifl.com 中有专门的“问答”版块(如解析中提到的“知识问答”版块),建议使用更精准的 QAPage 类型。
逻辑判断:
你需要判断当前帖子是否在“知识问答”版块(假设该版块 fid 为 40)。
修改 viewthread_node_body.htm:
- <!--{if $_G['fid'] == 40 && $post['first']}-->
- <script type="application/ld+json">
- {
- "@context": "https://schema.org",
- "@type": "QAPage",
- "mainEntity": {
- "@type": "Question",
- "name": "$$_G['forum_thread']['subject']",
- "text": "{echo cutstr(strip_tags($post['message']), 300, ' ')}",
- "answerCount": "$$_G['forum_thread']['replies']",
- "upvoteCount": "$$_G['forum_thread']['heats']",
- "author": {
- "@type": "Person",
- "name": "$$_G['forum_thread']['author']"
- }
- }
- }
- </script>
- <!--{/if}-->
复制代码
🚀 部署后的验证步骤
修改完模板后,必须执行以下操作才能生效:
- 更新缓存:
- Discuz! 后台 -> 工具 -> 更新缓存(全选并提交)。这是最重要的一步,否则修改不会显示。
- 前端验证:
- 打开一个帖子页面。
- 右键“查看网页源代码”。
- 搜索 application/ld+json。
- 复制那段 JSON 代码。
- 使用 Google 工具测试:
💡 给 bbs.dezhifl.com 的特别建议
根据你提供的网页解析,你的网站有很多“GEO实战”和“AI工具”的内容。
建议在 方案二 的 JSON-LD 中,增加 about 字段,显式告诉 AI 这篇文章是关于“***行业”或“专题”的,这能极大提升相关性:
在 Discuz! 模板中,你可以通过读取帖子的标签(tags)来动态生成这个 about 字段,如果技术实现有难度,直接写死核心关键词也是有效的。
本文引用来源与武汉得知网络
|