前六篇讲的都是“规则”:模板层级怎么选、最小主题几个文件、零件怎么拼。这些规则落到一个真实主题上是什么样?这一篇就拿 caogenbj(本站正在用的主题)整个拆一遍。
拆主题的第一步,不是读代码,是看文件结构。因为文件名本身就是一张“页面地图”。
caogenbj 的目录里,PHP 文件有这些:
| 文件 | 对应的页面 | 怎么知道的 |
|---|---|---|
| index.php | 首页 + 所有兜底页面 | 模板层级的最后一级 |
| single.php | 文章页 | single 线 |
| page.php | 独立页面 | page 线 |
| category.php | 分类页 | category 线 |
| category-liupangketang.php | “刘胖课堂”分类专用 | category-{别名} 优先级更高 |
| searchform.php | 搜索输入框 | 注意不是搜索结果页 |
| sidebar.php | 侧栏 | 被 get_sidebar 引入 |
| header.php | 页头 | 被 get_header 引入 |
| footer.php | 页脚 | 被 get_footer 引入 |
| functions.php | 功能层 | 不是模板,不放页面内容 |
| head-seo.php | head 里的 SEO 标签 | 我后加的,被 header.php 引入 |
对着这张表,你就能回答“我要改 XX,改哪个文件”。比如:
single.php;category.php;header.php;functions.php。为什么它单独做了一个 category-liupangketang.php?
因为“刘胖课堂”这个分类要特殊排版——打开看,它有轮播图、三栏导航,还有一堆外站视频链接。跟普通分类页完全不一样。所以作者给它做了个专用模板。
这就是“分类专用模板”的典型用法:大部分分类用 category.php,个别分类需要特殊排版,就给它单独做一个。
同理,如果你以后看到一个主题里有 page-about.php、single-video.php 这种文件,基本能猜到:这个站有“关于页”和“视频类型文章”需要特殊处理。
文件名就是设计意图的说明书。读主题先读文件名,比直接扎进代码快得多。
前面第三篇提过:caogenbj 缺 tag.php、archive.php、search.php、404.php。
这不是“漏了”,是“当初没做”。模板层级会兜底,所以网站能跑,但兜底出来的效果不好:
这就引出一个判断主题“完整度”的方法——拿一张检查表,逐个对照:
| 页面类型 | 该有的文件 | caogenbj |
|---|---|---|
| 首页 | index.php 或 home.php | 有 index.php |
| 文章页 | single.php | 有 |
| 独立页面 | page.php | 有 |
| 分类页 | category.php | 有 |
| 标签页 | tag.php 或 archive.php | 缺 |
| 搜索结果页 | search.php | 缺 |
| 404 页 | 404.php | 缺 |
| 侧栏 | sidebar.php | 有 |
| 页头页脚 | header.php / footer.php | 有 |
这张表你可以直接拿去体检任何主题。缺的越多,说明这个主题越“将就”。
光看文件名还不够,还要看“谁引用了谁”。caogenbj 的引用关系是这样的:
index.php
├─ get_header() → header.php → include head-seo.php
├─ 主循环(文章列表)
├─ get_sidebar() → sidebar.php
└─ get_footer() → footer.php
single.php
├─ get_header() → header.php
├─ 主循环(单篇)
├─ get_sidebar() → sidebar.php
└─ 自己手写了一份 footer(问题!)
看到那个“自己手写了一份 footer”了吗?这就是第五篇讲的那个问题——single.php 没调 get_footer(),而是把 footer.php 的内容抄了一遍。page.php 也一样。
读主题的时候,把引用关系画出来,重复的地方一眼就能看见。重复 = 维护成本 = 设计没想清楚。
caogenbj 是个很典型的“国产博客主题”:
它不是“坏主题”,它是“一个够用但没打磨过的主题”。而“没打磨过”这件事,恰好是最好的教材——因为你能看到“不规范的写法长什么样”,比看一个完美的主题学到的更多。
一句话记住:读主题先读文件名,文件名就是页面地图;再画引用关系,重复的地方就是设计缺陷。
下一篇是卷一的复盘:把前七篇串成一张完整的图,用一个真实 URL 从头走到尾。