Z-Blog 插件开发从 0 到 1:钩子选择、配置页与升级兼容
摘要
先说结论:Z-Blog 插件开发的骨架是四件套——plugin.xml 声明、include.php 挂钩子、main.php 做设置页、配置存在 $zbp->Config(模块ID)。把「挂哪个钩子」想清楚,比写代码更重要。 一、先想清楚
先说结论:Z-Blog 插件开发的骨架是四件套——plugin.xml 声明、include.php 挂钩子、main.php 做设置页、配置存在 $zbp->Config(模块ID)。把「挂哪个钩子」想清楚,比写代码更重要。
一、先想清楚三件事再动手
- 插件要介入哪个环节?输出前改内容、保存前校验、后台加菜单、路由加接口,各自对应不同钩子。
- 介入的是前台还是后台?后台钩子不能在前台依赖,否则会拖慢甚至报错。
- 要不要设置页?要改参数就一定要有配置项,不要硬编码在代码里。
二、钩子选择的原则
- 能用「数据层」钩子就不要用「输出层」钩子;数据层更稳,不受主题改动影响。
- 同一功能只挂一个最靠后的钩子,避免多个钩子重复执行。
- 挂载函数里必须做环境判断,后台/前台、是否登录、是否目标页面,否则容易全局生效导致性能下降或异常。
三、include.php 的写法要点
- 所有挂载集中在 include.php,逻辑放独立文件或类里,便于维护。
- 任何钩子回调都要先做「是否本站需要处理的请求」判断,尽早 return。
- 不要 Hook 里直接查库查多次,能缓存的结果先缓存。
四、设置页与配置
- 设置页用 main.php,读配置用
$zbp->Config('插件ID'),保存后调用 SaveConfig。 - 字段命名统一加前缀,避免与其他插件冲突。
- 读取配置时给默认值,避免用户没保存过导致空值报错。
五、升级兼容(最容易忽略)
- 配置项新增时要能兼容旧数据,读取不到就用默认值。
- 数据库结构变更必须写带版本判断的升级逻辑,不能在主流程里无脑执行。
- 卸载时清理自己建的表与配置,别给用户留垃圾。
六、发布前自检
- 未登录、已登录、管理员三种身份各测一遍。
- 禁用插件后站点完全恢复正常,无残留影响。
- 开启调试模式跑一遍,确认没有警告与弃用提示。
插件开发的核心不是写得多,而是介入得准、退出得干净。
2026年10月22日 10:38
前后30天 · 点日期看归档
9月22日
9月23日
9月24日
9月25日
9月26日
9月27日
9月28日
9月29日
9月30日
10月1日
10月2日
10月3日
10月4日
10月5日
10月6日
10月7日
10月8日
10月9日
10月10日
10月11日
10月12日
10月13日
10月14日
10月15日
10月16日
10月17日
10月18日
10月19日
10月20日
10月21日
10月22日
10月23日
10月24日
10月25日
10月26日
10月27日
10月28日
10月29日
10月30日
10月31日
11月1日
11月2日
11月3日
11月4日
11月5日
11月6日
11月7日
11月8日
11月9日
11月10日
11月11日
11月12日
11月13日
11月14日
11月15日
11月16日
11月17日
11月18日
11月19日
11月20日
11月21日