首页 / 开发文档 / 子主题:只改你要改的那几页

子主题:只改你要改的那几页

为什么改了官方主题迟早出事,以及子主题是怎么把这件事解决掉的。

先说问题

直接改官方主题的模板文件(比如 templates/default/index.html)会发生什么?

  • 系统在线更新会按白名单覆盖官方主题目录 —— 你的改动被冲掉,而且不会提前告诉你;
  • 改坏了一个标签,整个首页变样,回滚只能靠备份。

子主题解决的就是这件事:你的改动放在自己的目录里,官方目录一个字节都不碰。

子主题长什么样

templates/mytheme/
├── theme.json      ← 只有这一个字段是关键:"parent": "default"
└── index.html      ← 你改过的首页,其余模板从父主题继承
{
  "name": "mytheme",
  "title": "我的主题",
  "version": "1.0.0",
  "parent": "default"
}

查找规则

浏览器要 detail.html
   ↓ templates/mytheme/detail.html  没有
   ↓ templates/default/detail.html  有 → 用它

浏览器要 index.html
   ↓ templates/mytheme/index.html   有 → 用它(不再往下找)

所以:改哪一页就把哪一页复制过来改,其余完全不用管。 父主题升级时,只有你没动过的文件会更新 —— 官方的 bug 修复照收,你的改动还在。

三个常见坑

  1. parent 写错名字:"parent": "defualt" 拼错 → 找不到的文件全都"模板缺失", 页面一片空白。写完在主题管理页看一眼有没有红色提示。
  2. 以为 header.html 也要复制:不用。父主题有就先继承着,等你真要改顶栏时再复制过来。
  3. 把主题放到 themes/ 目录:那里不是主题根,主题系统看不见它。 主题一律放 templates/<名字>/;你的目录不在在线更新的白名单里,升级不会碰它。

整站模板包(仿站)里的主题就是子主题

用「整站模板」导出的包,如果勾了"带上主题文件",导入到别的站时会装成一个 继承源主题的子主题,并且不会自动切换 —— 切不切由站长决定。

子主题只适合"改版式"。如果你要做的是完全不同的视觉体系(全新的 CSS 与 DOM 结构), 直接做独立主题更清爽:"parent" 留空,模板全自己写。
没找到答案? 可以在 联系我们 留言说明使用场景,我们会补充进文档。