Z-Blog 插件开发从 0 到 1:钩子选择、配置页与升级兼容

· zblog · 阅读 9
摘要

先说结论:Z-Blog 插件开发的骨架是四件套——plugin.xml 声明、include.php 挂钩子、main.php 做设置页、配置存在 $zbp->Config(模块ID)。把「挂哪个钩子」想清楚,比写代码更重要。 一、先想清楚

先说结论:Z-Blog 插件开发的骨架是四件套——plugin.xml 声明、include.php 挂钩子、main.php 做设置页、配置存在 $zbp->Config(模块ID)。把「挂哪个钩子」想清楚,比写代码更重要。

一、先想清楚三件事再动手

  1. 插件要介入哪个环节?输出前改内容、保存前校验、后台加菜单、路由加接口,各自对应不同钩子。
  2. 介入的是前台还是后台?后台钩子不能在前台依赖,否则会拖慢甚至报错。
  3. 要不要设置页?要改参数就一定要有配置项,不要硬编码在代码里。

二、钩子选择的原则

  • 能用「数据层」钩子就不要用「输出层」钩子;数据层更稳,不受主题改动影响。
  • 同一功能只挂一个最靠后的钩子,避免多个钩子重复执行。
  • 挂载函数里必须做环境判断,后台/前台、是否登录、是否目标页面,否则容易全局生效导致性能下降或异常。

三、include.php 的写法要点

  • 所有挂载集中在 include.php,逻辑放独立文件或类里,便于维护。
  • 任何钩子回调都要先做「是否本站需要处理的请求」判断,尽早 return。
  • 不要 Hook 里直接查库查多次,能缓存的结果先缓存。

四、设置页与配置

  • 设置页用 main.php,读配置用 $zbp->Config('插件ID'),保存后调用 SaveConfig。
  • 字段命名统一加前缀,避免与其他插件冲突。
  • 读取配置时给默认值,避免用户没保存过导致空值报错。

五、升级兼容(最容易忽略)

  • 配置项新增时要能兼容旧数据,读取不到就用默认值。
  • 数据库结构变更必须写带版本判断的升级逻辑,不能在主流程里无脑执行。
  • 卸载时清理自己建的表与配置,别给用户留垃圾。

六、发布前自检

  • 未登录、已登录、管理员三种身份各测一遍。
  • 禁用插件后站点完全恢复正常,无残留影响。
  • 开启调试模式跑一遍,确认没有警告与弃用提示。

插件开发的核心不是写得多,而是介入得准、退出得干净。