2026-07-28 站点 SEO 设置增强
背景
与 typecho/WordPress/emlog/zblog 等主流 CMS 对齐,补齐站点设置中缺失的 SEO 关键字段。原站点设置只有「站点名称」和「站点介绍」两项,缺少副标题、关键词、描述,且首页/排行榜/发现页的 meta keywords 写死或为空,浪费 SEO 资源。
新增功能
后台「站点设置 → 基础」新增 3 个字段:
站点副标题(
sitesubtitle)— 单行输入,slogan 性质,显示在浏览器<title>站点名称后站点关键词(
site_keywords)— 单行输入,逗号分隔,作为全站默认 SEO 关键词站点描述(
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 大分区
基础 SEO 设置:站点副标题 / 站点关键词 / 站点描述
站点地图 (Sitemap):启用开关 / 帖子数量上限(默认 1000)/ 缓存时长(默认 3600s)/ 查看 sitemap.xml 按钮
AI/GEO 优化:
启用 Open Graph / Twitter Card 开关
启用 JSON-LD 结构化数据开关
启用 Canonical URL 开关
llms.txt 编辑:直接编辑根目录 llms.txt(AI 模型站点说明文件),含错误警告提示
SEO 健康检查:10 项实时检测,红黄绿状态显示
站点关键词 / 站点描述 / 站点副标题
Sitemap 启用 / robots.txt / llms.txt
Open Graph / JSON-LD / Canonical / 伪静态 URL
系统层与插件扩展说明:
系统层已实现项(无需插件):动态 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:imageseo_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占位值

