本站不再是一份纯粹的文档站,而是一个默认博客形态、按需在文档页切到三栏形态的站点。同时把此前手写的 xfm 文档替换为官方整理的完整文档集。

关键机制:单页 front-matter 覆盖主题形态

主题 layout.ejs 的形态解析顺序是:

Text
1
page.mode  ||  theme.mode  ||  'blog'

也就是说 单页 front-matter 的 mode 会覆盖主题默认模式。所以「站点默认 blog + 文档页 docs」可以在同一站共存:

页面 front-matter 渲染形态
首页 / 归档 / 文章 无 data-mode="blog"
/docs/ 及各文档页 mode: docs data-mode="docs"

据此把 theme_config.mode 由 docs 改为 blog。

导入官方 xfm 文档集

从外部导入了一套官方 xfm 文档(28 篇,扁平结构 /docs/<slug>/),处理方式:

  • 替换:移除此前手写的 source/docs/xfm/(8 篇),改用导入集。
  • 保留:source/docs/xongyi/(8 篇)原样保留。
  • 侧栏:source/_data/docs.yml 采用导入版的 8 个分组,并在末尾追加「hexo-theme-xongyi」分组,共 9 组 / 35 条链接。

source/docs/ 合计 36 篇(28 xfm + 8 xongyi)。

修复导入内容的一处错误

导入的 tags-tabs-timeline 页里残留了一个 tabs_end 收尾标签 —— 主题并未注册它(只有 tabs / endtabs),导致构建抛出:

Text
1
Nunjucks Error: unknown block tag: tabs_end

删除该行后恢复正常。为此我全量比对了文档用到的全部标签与主题注册标签,确认除它之外没有其它未知标签。

经验:未知标签会直接中断构建

主题注册的标签有 note、fold/collapse、tabs/tab、timeline/event、row/col、button、label、icon、mermaid、linkcard。没有 tabs_end。导入外部内容时,先扫一遍全文用到的标签名与注册表比对,能省掉一次返工。

结果

  • 构建 72 files,0 error。
  • 侧栏 35 条链接全部命中,36 篇文档无孤儿页。
  • 搜索索引与 sitemap 各收录 36 条文档。