船说 CMS 模板修改会影响升级吗
学完这篇你能得到明确答案:改船说 CMS 模板会不会影响升级、哪些改法会被升级覆盖、怎么做才能既改模板又不怕升级。
第一步:先确认升级到底覆盖哪些文件
结论是:**会不会影响升级,不取决于你改了多少,而取决于你改的文件在不在升级包的覆盖清单里。** 所以第一步不是动手改,而是先看清升级包的目录结构。
拿到升级包(通常是 xxx_update.zip 或 xxx_patch.tar.gz)后,先解压到临时目录,不要直接覆盖网站根目录:
mkdir -p /tmp/upgrade && cd /tmp/upgrade
unzip ~/xxx_update.zip
find . -type d -maxdepth 2
船说 CMS 的升级包一般只包含这几类目录:app/(核心程序)、public/static/(前端静态资源)、template/(默认模板)、data/(配置与缓存占位)。
注意:只要升级包里出现了
template/目录,就说明官方模板会被整体覆盖。你在后台「模板管理 → 模板文件」里点「编辑」保存的修改,本质也是写回这些磁盘文件,同样会被覆盖,不存在"后台改的就安全"这一说。
第二步:备份,再备份一次
这一步要拿到一个"升级失败也能一键回滚"的状态。三个东西必须备份:数据库、模板目录、配置文件。
mysqldump -u root -p chuanshuo_db > ~/backup_db_$(date +%F).sql
# 模板目录与配置
tar -czf ~/backup_template_$(date +%F).tar.gz template/
cp config/database.php ~/backup_database.php
同时记下后台首页右下角显示的版本号,比如从 5.2.1 升到 5.3.0,这个版本号决定了你后面要查哪一份升级说明。
第三步:改模板时用"复制一套"而不是改默认模板
这一步的目标是让你的修改和官方模板物理隔离。具体做法:
- 进入后台「模板管理 → 模板列表」,找到默认模板目录名(常见是
default或default_mobile)。 - 用 FTP 或宝塔面板的文件管理器,把整个
template/default/复制一份,重命名为template/mytheme/。 - 回到后台「模板管理 → 模板列表」,把
mytheme设为当前启用模板。 - 之后所有 HTML、CSS、JS 修改都在
mytheme/里做。
这样升级包覆盖的是 template/default/,你的 mytheme/ 不受影响。升级后只需把官方 default/ 的改动对比着搬过来。
注意:模板里如果有
{include file="..."}之类的引用路径写死了default,复制后要一并改成mytheme,否则前台会报模板找不到。
第四步:能用配置和插件解决的,别改模板文件
优先级从高到低:后台配置项 > 自定义变量/广告位/导航管理 > 插件钩子 > 模板文件。前三种升级都不会覆盖,因为它们存在数据库里。
比如改导航文字、改页脚版权、加统计代码,后台「系统设置 → 网站设置」和「内容管理 → 导航管理」里就能完成,完全没必要动 .html 文件。
第五步:升级时用 diff 合并,而不是"有冲突就全丢"
升级执行前,先把新包里的 template/default/ 和服务器上旧的 template/default/ 做一次对比:
diff -ru template/default/ /tmp/upgrade/template/default/ > template_diff.txt
打开 template_diff.txt,凡是 + 开头的是官方新增(要保留),- 开头的是官方删除(考虑跟随),你自己改过的文件会以整块差异的形式出现——这类文件在覆盖前先单独备份,覆盖后手工把官方改动合进去。
如果你一开始就把站点纳入 Git 管理(git init && git add . && git commit),这一步会简单得多:升级后 git diff 一眼就能看出官方改了什么、你改了什么。
第六步:升级后清缓存 + 回归检查
升级完成、模板合并完成后,进入后台「系统设置 → 缓存管理」,点「清除全部缓存」,再删除 runtime/ 目录下的临时文件。然后依次检查:首页、列表页、内容详情页、搜索页、手机端页面,重点看模板标签有没有报错提示。
小结
- 改模板会不会影响升级,看的是你改的文件是否在升级包覆盖范围内;改默认模板目录,基本一定会被覆盖。
- 安全做法是复制一套模板改名启用,把修改和官方文件物理隔离。
- 能用后台配置、自定义变量、插件解决的,别直接改模板文件,这些存数据库,升级不动。
- 升级前必备份数据库、模板目录、配置文件,并记下当前版本号。
- 升级时用
diff -ru或 Git 对比合并,别"有冲突就全丢"或"直接全覆盖"。 - 升级后清缓存,逐页回归检查。
原文链接:https://www.gj0.com/thread-1035.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。