迅睿CMS 模板目录结构:模板文件到底放在哪
迅睿CMS的模板不在主题目录里,第一次用的人很容易在 /theme/ 下找半天没有结果。 它的模板实际放在 /template/ 下,但真正的「用哪套模板」是由站点配置里的 模板方案 决定的。 目录结构 标准的一点是: /templat
迅睿CMS的模板不在主题目录里,第一次用的人很容易在 /theme/ 下找半天没有结果。
它的模板实际放在 /template/ 下,但真正的「用哪套模板」是由站点配置里的 模板方案 决定的。
目录结构
标准的一点是:
/template/
/default/ ← 方案名
/home/ ← 首页
index.html
/list/ ← 列表页
/show/ ← 内容页
/category/ ← 栏目页
/search/ ← 搜索
/member/ ← 会员中心
/error/ ← 错误页
/mytheme/ ← 自己建的方案
第一层是方案名,不是模板类型。这个层级很多教程说成「主题」,实际后台叫「模板方案」。
改站默认样式时不要直接改默认模板方案
/default/ 是官方的默认模板,升级时会被覆盖。
我第一次用的时候不懂,直接在 /template/default/home/index.html 里改了一堆样式。跑了两周,一次小版本更新后全没了。
后来习惯是:复制一份 /default/ 成 /mytheme/,然后在后台「设置 → 模板方案」里切换过去。所有修改都在 /mytheme/ 里做。
方案切换在数据库里
切换动作不在文件里,是数据库 dr_site 的 site_theme 字段。
多站点部署的时候这一点很重要。文件可以通过部署流程统一覆盖,但模板方案是每个站独立配置的,共享一份代码目录下,两个站可以跑不同的模板方案。
模板文件的后缀
迅睿CMS模板文件是 .html 后缀,但里面写的不是纯 HTML,是带标签语法的模板。
这些标签大致分两类:
{$变量}—— 输出变量{模板标签 ...}—— 调用数据、循环、条件
标签由迅睿的模板引擎在服务端执行完再输出给浏览器,最终用户看到的还是标准 HTML。
找文件的最快方式
后台「模板 → 模板文件管理」里能直接看到当前方案下所有模板文件,还有在线编辑器。这比在文件管理器里翻快得多。
如果前台一个页面样式不对,想定位是哪个模板文件,可以在 config/routes.php 里临时加个调试参数,或者直接看后台页面对应的「模板文件」提示——迅睿的后台编辑页一般会标出来当前页面用的是哪个模板。
最常被忽略的一点
模板目录是可以自定义的。安装时如果选了个非默认的路径,那 /template/ 就不是这个名。
这一点在接手别人项目的时候特别容易卡住。拿到代码,照着网上的教程找 /template/,找不到。检查 config/template.php 里的 template_path 才知道被改到别处了。
这套路径写在配置里,不在数据库。所以迁移站点的时候,代码目录一拷,路径跟着走。
升级时该保留什么
升级覆盖的是 /system/ 和 /config/,/template/ 下的自定义方案不会被动。
但如果方案是从 /default/ 复制出来的,而新版 /default/ 加了新的模板文件(比如会员中心多了一个页面),你复制的方案里就没有。
这是升级后最常遇到的问题:新功能页面报「模板不存在」。解法是从新版 /default/ 把对应的新文件补到你的方案目录里。
所以我的习惯是,把方案目录名里带上基础版本号,比如 mytheme-v4。升级时一眼就知道是从哪个版本分出去的,补文件时好比对。