
很多人学 Z-BlogPHP,前面环境也搭好了,运行流程也知道一点,但一真正开始改需求,还是会很乱。
乱的根源通常不是不会写代码,而是不知道:
include.phpheader.php,还是写在 single.php所以这一篇的目标很明确:
先建立一张“文件职责表”,让你以后看到需求时,先能找到正确落点。
这件事比你背多少函数都更重要。
Z-BlogPHP 开发最容易犯的错误,不是完全不会写,而是“明明能改对地方,却偏偏改到了更重的一层”。
比如:
更稳的原则是:
你后面会发现,很多维护成本,不是功能本身造成的,而是落点选错造成的。
先看主题目录:
zb_users/theme/<theme>/
├── theme.xml
├── include.php
├── main.php
├── template/
├── style/
├── script/
└── assets/
这几个位置里,最常碰到的是前四个。
theme.xml这是主题元信息文件。
它更像“主题身份证”,而不是业务逻辑文件。
通常负责:
include.php 入口声明什么时候看它?
什么时候不该优先改它?
这些都不是它的主战场。
include.php这是主题逻辑层最重要的文件之一。
它通常负责:
什么时候更适合改这里?
如果你发现某段代码在多个模板里复制粘贴,通常就是该回到 include.php 的信号。
main.php这是主题后台设置页的主落点。
它通常负责:
CheckIsRefererValid()SaveConfig()BuildTemplate() 或其他重建动作什么时候更适合改这里?
它不该承担什么?
这些都不是它的职责。
template/*.php这是前台输出层。
它通常负责:
什么时候优先改这里?
什么时候不要一上来就改模板?
那就应该回到逻辑层。
很多人知道要改模板,但还是会在模板里乱撞。
更稳的做法,是先知道常见模板文件各自最像什么。
header.php通常负责:
<head> 区域{$header} 输出你要改这些东西时,优先想它:
footer.php通常负责:
{$footer} 输出适合放:
index.php通常负责:
很多主题会在这里基于 $type 再做分支判断。
如果你要改的是:
它通常就是第一站。
single.php通常负责文章详情页。
适合放:
page.php如果主题单独提供它,通常负责独立页面。
适合放:
这种不完全等同于普通文章详情的页面结构。
search.php通常负责搜索结果。
如果没有,有些主题会回落到 index.php。
适合处理:
comments.php通常负责:
评论问题一半在这里,一半不在这里。
这一点后面讲评论专题时会再展开。
再看插件目录:
zb_users/plugin/<plugin>/
├── plugin.xml
├── include.php
├── main.php
├── includes/
└── vendor/
plugin.xml和主题的 theme.xml 很像,也是元信息层。
负责:
它不是具体逻辑实现层。
include.php这是插件行为真正开始挂接的地方。
通常负责:
RegisterPlugin(...)Add_Filter_Plugin(...)当你想知道一个插件“到底从哪开始生效”,最先就该看这里。
main.php这是后台设置和管理工具入口。
通常负责:
和主题 main.php 一样,它更偏后台表单和管理工具,不是前台渲染层。
includes/当插件逻辑开始变多时,常会把具体行为拆到这里。
比如:
如果一个插件比较复杂,真正的业务实现往往就在这里。
vendor/这一般是第三方依赖。
你需要知道它存在,但不要把自己的业务逻辑也乱塞进去。
这是开发中最值钱的一道判断题。
一句话概括:
强绑定外观的,更像主题职责。
强绑定流程和复用的,更像插件职责。
Config,什么需求该放 Metas这也是高频分歧点。
Config适合:
也就是:
对整个主题或插件都生效的全局设置。
Metas适合:
也就是:
挂在单个对象身上的字段。
如果你把这两类东西混着存,后面会非常难维护。
以后拿到需求,你可以先按这个方式判断:
先看:
template/index.phptemplate/single.phptemplate/page.phptemplate/search.php先看:
template/header.phpinclude.php先看:
main.phpinclude.php先看:
include.php先看:
template/comments.php先看:
include.phpFilter_Plugin_Zbp_PreLoadRegRoute(...)先看:
main.php这通常会让代码越来越难读。
短期省事,长期维护最痛。
最后会出现:
后面内容编辑会很别扭。
这几乎总是过早的。
我很建议你以后每次动手前,都先问自己这四句:
很多弯路,都是这四个问题没先问清楚。
Z-BlogPHP 并不怕文件多,它真正怕的是你不分层。
只要你先建立起这张职责表:
theme.xml 和 plugin.xml 是元信息层include.php 是逻辑和挂接层main.php 是后台设置和管理层template/*.php 是前台输出层Config 是全局设置Metas 是对象字段后面无论你写主题、写插件、调评论、扩后台、做 SEO 二开,落点都会清楚很多。
下一篇我们开始进入真正的主题开发,从一个主题最小可用结构,到底应该长什么样开始讲。
发表评论: