迅睿CMS 模板目录结构:模板文件到底放在哪

· 迅睿CMS · 阅读 13
摘要

迅睿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。升级时一眼就知道是从哪个版本分出去的,补文件时好比对。