XIUNOX 更新日志 2026-07-28 站点 SEO 设置增强

管理员组

2026-07-28 站点 SEO 设置增强

背景

与 typecho/WordPress/emlog/zblog 等主流 CMS 对齐,补齐站点设置中缺失的 SEO 关键字段。原站点设置只有「站点名称」和「站点介绍」两项,缺少副标题、关键词、描述,且首页/排行榜/发现页的 meta keywords 写死或为空,浪费 SEO 资源。

新增功能

后台「站点设置 → 基础」新增 3 个字段:

  1. 站点副标题sitesubtitle)— 单行输入,slogan 性质,显示在浏览器 <title> 站点名称后

  2. 站点关键词site_keywords)— 单行输入,逗号分隔,作为全站默认 SEO 关键词

  3. 站点描述site_description)— 多行文本,作为全站默认 SEO 描述,留空时回退到站点介绍

SEO 生效规则

  • <title>:首页显示 站点名称 - 站点副标题(副标题留空则只显示站点名称)

  • <meta keywords>

    • 聚合页(首页/版块总览/排行榜/发现页)使用 site_keywords

    • 内容页(帖子/版块/用户/标签/搜索结果等)使用各自的关键词

  • <meta description>

    • 聚合页优先用 site_description,留空时回退到 sitebrief

    • 内容页使用各自的描述(帖子摘要、版块描述等)

改动文件

  • admin/route/setting.php — base 动作 GET/POST 加 3 字段读写

  • admin/view/htm/setting_base.htm — 表单加 3 个输入框

  • lang/zh-cn/bbs_admin.php — 简体中文语言包

  • lang/zh-tw/bbs_admin.php — 繁体中文语言包

  • lang/en-us/bbs_admin.php — 英文语言包

  • conf/conf.default.php — 默认值(3 字段默认为空字符串)

  • index.inc.php$header 默认值改用 site_keywords/site_description,title 拼副标题

  • route/forum_index.php — 删除写死的 keywords/description,用全局默认

  • route/rank.php — 同上

  • route/more.php — 同上

  • api/v1/admin.php — API 白名单加 3 字段

设计说明

  • 前端 view/htm/header.inc.htm 已有 <meta name="keywords"><meta name="description"> 渲染逻辑,本次只是补齐后端填值入口

  • 聚合页删除写死的 keywords(如「版块总览」「排行榜,热门帖子,活跃用户」),改为复用站点级默认值,避免每个聚合页都要单独配置

  • 内容页(帖子/版块/用户等)的动态 keywords/description 保持不变,继续走各路由的动态逻辑

  • 未来独立的 SEO 插件可通过 hook 覆盖 $header['keywords']/$header['description'],实现每页独立 SEO、sitemap、百度推送等进阶功能

注意事项

  • 修改了 _include() 加载的文件(route/.php、view/htm/.htm、lang/*_bbs_admin.php),已清理 tmp 编译缓存

  • 存量站点 conf/conf.php 不会自动出现新字段,首次访问后台设置页时 PHP 用 isset($conf['xxx']) ? $conf['xxx'] : '' 兜底,保存后写入


2026-07-28 新增独立 SEO 设置 Tab + AI/GEO 优化开关

背景

原 SEO 字段(sitesubtitle/site_keywords/site_description)混在「基本设置」tab 中,缺乏集中管理界面。同时系统层已实现的 sitemap/robots.txt/llms.txt/OG/JSON-LD/canonical 等能力无法在后台查看和管控。本次新增独立「SEO 设置」tab,集中管理所有 SEO 相关配置,并提供 AI/GEO 优化开关、llms.txt 编辑、SEO 健康检查、系统层与插件扩展说明。

新增功能

1. SEO 独立 Tab

  • 在「站点设置」下新增「SEO 设置」子 tab(位于「基本设置」与「固定链接」之间)

  • 原「基本设置」tab 中的 sitesubtitle/site_keywords/site_description 三个字段移到 SEO tab

2. 6 大分区

  1. 基础 SEO 设置:站点副标题 / 站点关键词 / 站点描述

  2. 站点地图 (Sitemap):启用开关 / 帖子数量上限(默认 1000)/ 缓存时长(默认 3600s)/ 查看 sitemap.xml 按钮

  3. AI/GEO 优化

    • 启用 Open Graph / Twitter Card 开关

    • 启用 JSON-LD 结构化数据开关

    • 启用 Canonical URL 开关

  4. llms.txt 编辑:直接编辑根目录 llms.txt(AI 模型站点说明文件),含错误警告提示

  5. SEO 健康检查:10 项实时检测,红黄绿状态显示

    • 站点关键词 / 站点描述 / 站点副标题

    • Sitemap 启用 / robots.txt / llms.txt

    • Open Graph / JSON-LD / Canonical / 伪静态 URL

  6. 系统层与插件扩展说明

    • 系统层已实现项(无需插件):动态 sitemap、robots.txt、llms.txt、meta keywords/description、canonical、prev/next、OG/Twitter Card、JSON-LD、robots meta、noindex、伪静态、theme-color

    • 建议插件扩展项:每页独立 SEO 覆盖、百度/神马/Bing 主动推送、自动内链、WebP 转换、URL slug、结构化数据扩展、统计集成、原创度检测、死链检测、hreflang

SEO 开关生效逻辑

  • seo_og_enabled=0 → 不输出 og:title/og:description/og:type/og:site_name/og:url/og:image/twitter:card/twitter:title/twitter:description/twitter:image

  • seo_jsonld_enabled=0 → 不输出 <script type="application/ld+json">

  • seo_canonical_enabled=0 → 不输出 <link rel="canonical">(注意:og:url 也依赖 canonical,关闭后 og:url 也会消失)

  • sitemap_enabled=0 → /sitemap.xml 返回 404

改动文件

文件

改动

admin/menu.conf.php

setting 菜单下加 seo 子 tab

admin/route/setting.php

加 seo action(GET+POST),从 base 删除 sitesubtitle/keywords/description 字段;POST 后清理 sitemap 缓存

admin/view/htm/setting_base.htm

删除 sitesubtitle/site_keywords/site_description 三个表单字段

admin/view/htm/setting_seo.htm

新建:6 分区 SEO 设置页面

lang/zh-cn/bbs_admin.php

中文 SEO tab 文案 + 健康检查 + 系统层与插件提示

lang/zh-tw/bbs_admin.php

繁体中文同上

lang/en-us/bbs_admin.php

英文同上

conf/conf.default.php

新增 6 个默认值:sitemap_enabled/sitemap_thread_limit/sitemap_cache_ttl/seo_og_enabled/seo_jsonld_enabled/seo_canonical_enabled

view/htm/header.inc.htm

OG/JSON-LD/canonical 输出加开关判断

route/sitemap.php

加 sitemap_enabled 开关判断(关闭返回 404);sitemap_thread_limit/sitemap_cache_ttl 改为读取后台配置

api/v1/admin.php

setting 白名单加 6 个新字段

设计说明

  • header.inc.htm 已有完整的 OG/canonical/JSON-LD 渲染逻辑,本次只增加开关判断,路由层填充数据不变

  • 系统层已实现的 SEO 能力(每页 canonical/og_type/json_ld 填充、noindex 标记、AI 爬虫允许等)在「系统层说明」分区明确告知用户,避免重复造轮子

  • 「插件扩展」分区列出进阶 SEO 需求,引导用户使用独立插件实现,核心保持轻量

  • llms.txt 编辑直接读写根目录文件,保存后立即生效,无需重启

  • 保存 SEO 设置后自动清理 sitemap 缓存,让 sitemap_thread_limit 等配置立即生效

注意事项

  • 修改了 _include() 加载的文件(admin/route/setting.php、admin/view/htm/setting_base.htm、view/htm/header.inc.htm、lang/*_bbs_admin.php、admin/menu.conf.php),已清理 tmp 编译缓存

  • admin/view/htm/setting_seo.htm 是新文件,首次访问会被编译到 tmp/admin_view_htm_setting_seo.htm

  • 存量 conf/conf.php 不会自动出现新字段,PHP 用 !isset($conf['xxx']) || $conf['xxx'] 兜底默认开启

  • llms.txt 编辑需要根目录写权限,权限不足时返回错误提示

  • 强烈建议保持 OG/JSON-LD/canonical 三个开关开启,关闭会导致社交分享/AI 理解/重复内容等 SEO 问题


注意事项

  • 修改了 _include() 加载的文件(admin/route/plugin.php、admin/menu.conf.php、lang/*_bbs_admin.php),已清理 tmp 编译缓存(admin_view_htm_plugin_official_list.htm 是新文件,首次访问会被编译)

  • lib/OfficialPluginService.php 通过裸 include 加载,修改后立即生效

  • 部署前必须创建 GitHub 仓库 xiuno-official-plugins 并上传 manifest.json + 至少一个免费插件 zip 包

  • 部署前必须替换 lib/OfficialPluginService.php 中的 GITHUB_OWNER 占位值

最新回复

请先登录后再回复 登录