← 返回文章列表

手改过的主题,升级后怎么还回得来

主题升级覆盖的是模板文件,不是改主题这件事本身。手改的样式能不能回来,只取决于改之前有没有留一份能重放的档:分四类改动、留三样东西、按四步重放。

主题升级覆盖的是模板文件,不是"改主题"这件事本身。手改过的样式能不能回来,只取决于一件事:改之前有没有留一份能重放的档。留了,升级等于重启一下;没留,就得凭记忆重新摸一遍,而且大概率摸不回原样。

把补丁贴纸按回撕掉一角的书页
手改过的样式,本质是往别人的页面上贴补丁

先分清哪几种改动会掉

同一个主题里的改动,命运完全不同,先分类再谈备份,不然备份的是一堆用不上的文件。

用长尾夹夹好的一叠纸片与一张贴纸
留档留的是能直接重放的片段,不是一堆日期备份
改动类型 升级后会掉吗 恢复方式
后台主题设置(目录在左还是右、显示什么) 不掉 存在数据库里,主题没改字段名就一直有效
模板文件 templates/*.html 必掉 贴回片段,重启容器才生效
静态资源 assets/css、assets/js 必掉 贴回片段,改版本串,不用重启
正文里写死的样式(比如文末那个署名框) 不掉 属于文章内容,跟主题没关系

这里有个反直觉的点:模板文件改完,刷新页面看不到变化。模板是在容器启动时编译进内存的,改盘上的文件不改内存里的那一份。静态资源相反,改完立刻生效。所以"我改了啊怎么没变"和"我改了怎么还需要重启",说的是两种不同的文件。

留档要留能重放的东西

整目录备份没用——下次还得逐个文件 diff,找出哪几行是自己加的。要留的只有三样:改的是哪个文件(相对路径)、追加的片段原文(整块,可以直接粘)、怎么验证生效(一条命令,或者一个肉眼可见的现象)。

片段存成独立小文件,放在主题目录外面,命名带用途不带日期:

article-toc-mobile.css    手机端目录抽屉
layout-og.html            <head> 里的分享卡片标签
taxonomy-grid.css         分类页卡片布局

文件名里写用途,半年后还认得出来;写日期的话,一堆 bak-20261020 摆在面前,谁也说不清哪个是最新那版。

重放的顺序

顺序错了会白忙一场,正确是四步:

  1. 贴模板片段和静态资源片段;
  2. 改静态资源的版本串;
  3. 重启容器,等它起来;
  4. 逐项验证。

第二步最容易漏,也最隐蔽。主题引用样式表时带了一个 ?v=版本号 的查询串,而 CDN 对静态资源给的缓存时间是一年。你改完 CSS、内容确实对了,但版本串没变,浏览器和 CDN 拿到的还是旧文件——现象是"规则写对了,页面没变",然后开始怀疑选择器写错、怀疑被别处覆盖,绕一大圈。

第三步只为模板服务,静态资源不需要重启。重启后要等容器真的起来了再验,否则截到的是白屏,看着像改崩了。这一步通常会弹审批框,别以为命令卡死了。

验证别只看自己那台手机

至少三项:

目录——桌面上在右侧固定,手机上收成一个可展开的浮动入口,展开时不挡正文的点击区域;
分享卡片——页面源码里 og: 开头的标签数量大于 0,链接发到聊天软件里才有缩略图和摘要;
分类页——三列、两列、一列三个断点各看一遍。

桌面按 1280 宽、手机按 390 宽各截一张对比,比在电脑上缩放窗口靠谱。手机端最容易出事的正是那个目录:位置对了但盖住正文,等于没做。

这套办法兜不住的部分

有三类情况重放没用,只能重新适配:主题升级改了 class 名;主题自己接管了同一块区域(比如内置了目录组件),你那段样式成了重复实现;升级同时调整了配置结构的字段。

对策很土但有效:每个片段文件的第一行写清它依赖哪个 class 或哪个模板变量,升级后先 grep 一遍那个名字还在不在,在就照贴,不在就先停手改适配。

手改主题的代价不在改的时候,在下次升级的时候。把"下次"要花的时间提前写成一份能重放的清单,它就变成了十分钟。

▍ 本文由自建 Agent 调度内容流水线自动完成:写稿 → 模型 API 生图 → R2 图床 → 排版 → MCP 落站。 ▍ 配图由模型 API 生成、托管在对象存储上;内容仅供参考。