背景
此前主题所有页面共用同一个 <title>(站点标题),既没有 canonical 也没有社交分享标签。对搜索引擎来说首页、文章页、分类页无法区分;文章分享到社交平台时也只有纯文本,没有卡片预览。
新增能力
| 能力 | 说明 |
|---|---|
| 独立页面标题 | 首页用站点标题 + 副标题;文章、独立页、分类、标签、作者页各用自己的名称 |
| 分页标题 | 自动追加「第 N 页」,canonical 保留当前页而非一律指向首页 |
| 规范链接 | 每页输出绝对地址的 <link rel="canonical"> |
| Open Graph | og:type / og:site_name / og:title / og:url / og:description / og:image;文章页额外输出 article:published_time 与 article:modified_time |
| Twitter Card | 有封面时 summary_large_image,无封面时 summary |
| 结构化数据 | 文章页输出 BlogPosting JSON-LD(headline、url、description、image、datePublished、dateModified、author) |
| 个人主页入口 | 主题设置新增「基础 → 个人主页链接」,填写后在导航栏与页脚显示入口 |
两个 SEO 开关位于主题设置 → SEO:
- 规范链接和社交分享标签:已由 SEO 插件提供 canonical / OG / Twitter 时关闭,避免重复输出。
- 文章结构化数据:已由插件提供 JSON-LD 时关闭。
两个开关默认开启,且不影响页面标题——标题始终输出。站点 description、文章摘要、分类与标签描述仍由 Halo 侧维护,主题不重复注入同名标签。
其他改动
error.html移入templates/error/子目录,对齐 Halo 错误页的模板查找路径。- 文章封面补
alt(取文章标题)与decoding="async"/fetchpriority="high",改善可访问性与首屏加载。 - 修正外站链接的导航高亮:此前会把当前页的
active状态误加到指向外部域名的链接上。 - 归档页 canonical 同时保留年份与月份。
真机验证
在 Halo 2.26.0 上用正式发布包完成验证,主题显示 1.2.0 / READY,布局契约 LayoutTemplateSupported 正常。
11 条路径的 SEO 标签逐项核对全部通过:每页恰好一个 <title>、一个绝对地址 canonical、无重复 description;OG 与 Twitter Card 完整;文章 JSON-LD 可被正常解析,@type=BlogPosting,headline 与作者与正文一致;有封面时 twitter:card 为 summary_large_image,无封面为 summary。
| 页面 | 标题 | canonical | og:type |
|---|---|---|---|
| 首页 | 站点标题(+ 副标题) | / |
website |
| 首页第 2 页 | …- 第 2 页 | /page/2 |
website |
| 归档 | 文章归档 - … | /archives |
website |
| 归档分页 | 文章归档 - 第 2 页 - … | /archives/page/2 |
website |
| 文章详情 | 文章标题 - … | /archives/{slug} |
article |
| 分类 / 标签 | 分类名 - … | /categories/{slug} |
website |
| 作者页 | 作者名 - … | /authors/{name} |
profile |
| 404 | 资源不存在 - … | 不输出 | — |
两处风险点已专项验证:
error.html移入子目录后 404 页是否仍正常 —— 正常渲染,<title>正确、robots noindex生效、样式无破损(附无头浏览器截图核验)。已用 1.1.2 的包回滚做对照,确认某些请求返回 JSON 是Halo 的既有行为,与本次改动无关。- 归档末页
nextUrl为空时路径拼接是否报错 —— 实测末页渲染正常,canonical 正确回退到/archives,无异常。
视觉回归:首页与 404 页截图均无异常。静态校验:两个 YAML 文件解析通过,17 个模板标签闭合检查全部通过。
升级方式
- 下载本 Release 附件中的
theme-luye-1.2.0.zip - Halo 后台 → 外观 → 主题 → 找到「绿野 Luye」→ 升级 → 上传 zip
- 如主题设置显示不全,点击「重载主题配置」以加载新增的 SEO 与基础分组
原有主题设置保存在 ConfigMap 中,升级不会丢失。升级后建议强制刷新浏览器(Ctrl/Cmd + F5)清除缓存的 HTML/CSS。
若你已安装 SEO 插件,请到主题设置 → SEO 关闭对应开关,避免与插件重复输出相同标签。
兼容性
Halo >= 2.26.0,与前序版本一致。本次无破坏性变更。
资源下载
- theme-luye-1.2.0.zip
