1.2 模板套系与模板风格的区别
> 分清「换房子」和「换装修」,别把文件放错地方。
两个词先各下一句定义
模板套系:统一打包成系列的一整类模板,在磁盘上的形态是 template/{identifier}/ 这一个目录,里面有全套的 HTML 文件。
模板风格:沿用某个套系的全部代码、只改动量设置的一套方案。同一个套系下面可以挂多个风格,各自记一套自己的配置。
初学者最常犯的错,是以为这两者是并列关系——好像风格和套系平级,站点二选一。实际上是套系在前、风格在后的一对多:一个套系,多个风格。
一栋楼的不同装修
把站点想象成一栋已经盖好的楼:套系是楼本身——承重结构、户型、水电走向都定死了,改这些要动工程队;风格是装修方案——墙纸、地板、灯具、软装,同一套户型可以有任意多套装修。
对应到实际操作:
| 你想改的东西 | 该动哪一层 | 原因 |
|---|---|---|
| 换 logo | 换风格 | logo 路径是一个变量,改配置即可 |
| 换主色调、字体大小 | 换风格 | 配色和字号都是风格变量 |
| 换图片目录 | 换风格 | 基础图片目录 / 扩展图片目录由风格指定 |
| 换一个扩展配色 | 换风格 | style/ 下的配色由风格选择生效 |
| 改页面 HTML 结构、增删元素 | 换套系 | 结构写在套系的模板文件里 |
| 改导航层级、卡片排布 | 换套系 | 属于布局改动,风格管不到 |
结论一句话:改配色改图标改字号,改风格;改结构改布局,改套系。
风格由哪些设置项组成
后台的模板风格设置页里,风格由这样几项构成:
| 设置项 | 管什么 | 模板里怎么取 |
|---|---|---|
| 匹配模板 | 指定这个风格用哪个套系的 HTML 代码 | 决定 {IMGDIR} 之外的整套文件来源 |
| 扩展配色 | 在 style/ 下选一份配色 CSS 生效 |
template/{标识}/style/t1/style.css |
| 默认配色 | 基础配色方案 | 决定整体色调基调 |
| 界面基础图片目录 | 图片根路径,如 static/image/common |
$_G['style']['imgdir'] |
| 扩展图片目录 | 风格专属图片路径 | $_G['style']['styleimgdir'] |
| 字体大小 | 基础字号 | $_G['style']['fontsize'],如 12px/1.5 |
注意最后三行在模板里的写法。早期版本用 {IMGDIR}、{STYLEIMGDIR}、{FONTSIZE} 这种花括号常量,但从 X2 之后,模板中要改用 $_G['style'][键名] 的写法:
<img src="<?php echo $_G['style']['imgdir']; ?>/logo.png" alt="logo" />
这条写法的意义在于:常量是编译期替换的,写死成相对路径或绝对路径;换成 $_G['style'] 之后,取值发生在运行时,风格切换才真正生效。如果你发现自己换风格换了半天图片没变,先查这里用的是常量还是 $_G['style']。
扩展 CSS 与扩展配色
风格要好看,光改变量不够,通常还得写点 CSS。Discuz! 为此准备了两套扩展位点:
| 文件位置 | 作用 |
|---|---|
template/{标识}/common/extend_common.css |
在默认 common.css 基础上做覆盖式扩展 |
template/{标识}/common/extend_module.css |
在默认 module.css 基础上做覆盖式扩展 |
template/{标识}/style/t1/style.css |
扩展配色,在后台「扩展配色」中选择生效 |
前两个是「加在后面」的覆盖式扩展,第三个是独立的一套配色。三者都能在不改套系的前提下改变外观,正好对应「风格只改变量」这一定义——CSS 是风格的一部分,不是套系的一部分。
这两个扩展文件不需要你手动去 link 标签里挂,套系的公共模板已经加载了它们,你只要往文件里写覆盖规则就行。以默认套系为例,扩展文件的位置和写法是这样的:
<!-- 逻辑上等价于在公共模板里引一张额外的样式表 -->
<link rel="stylesheet" href="template/xxx/common/extend_common.css" />
xxx 换成你自己的套系标识符。这类覆盖式的关键是选择器要够具体。默认样式表里的规则已经先生效了,你的规则要么选择器权重更高,要么后加载,否则不会生效。写完记得更新缓存再刷页面,否则看到的还是旧样式。
一句话选型流程
拿到一个需求,按顺序问自己三个问题:
- 要不要改页面上的元素结构?要 → 换套系。
- 不用改结构,只是换个样子?→ 换风格。
- 要的根本不是外观,而是换一套布局逻辑或 HTML 写法?→ 换套系。
多数站长需求停在第 2 步,那就在当前套系下多建几个风格切换即可,成本极低。真正需要换套系的信号是:导航要变成侧边栏、列表页要换成卡片瀑布流、页脚结构要重排——这些已经不是配色能解决的了。
和后面章节的衔接
分清了套系和风格,接下来的动作就很明确:想多建几套配色,在同一个套系下建风格;想动 HTML,就在 template/ 下新建一个自己的套系目录。1.3 节会手把手走一遍新建套系的完整流程,1.4 节解决开发时的两个拦路虎——开发者模式开关和缓存更新。
