一、严重矛盾项(与 docs 冲突,必须修正)
插件上线规范要求中有些规则与项目实际规范直接冲突,如果不修正会误导开发者。
矛盾 1:conf.json 的 installed/enable 字段
插件上线规范要求 | 项目 docs |
|---|---|
安装后 | conf.json 禁止包含 installed/enable 字段,唯一权威源为 db |
bugfix_rules.md 明确写道(已违反 3 次):
conf.json 禁止包含 installed/enable 字段,代码层任何情况下都不得读取这两个字段。
plugin_init()在xn_json_decode(conf.json)后立即unset($arr['enable'], $arr['installed'])丢弃。
插件上线规范要求第 2.1 节和第 5.4 打包规范存在自相矛盾:2.1 说"安装后 conf.json 中 installed=1 且 enable=1",而 5.4 又说"不包含 conf.json 的 installed/enable 字段为 1(必须是 0)"。正确做法应统一为:conf.json 中不应出现这两个字段。
矛盾 2:缓存键长键哈希阈值
插件上线规范要求 | 项目 docs |
|---|---|
长键(>32 字符)会被 md5 哈希,deleteByPrefix 匹配不到,改用版本号机制 |
|
project_rules.md 和 bugfix_rules.md 缓存清单均明确:
缓存键长度:CACHE_KEY_MD5_THRESHOLD=200,超过 200 字符才会 md5 哈希;bbs_cache.k 已扩容为 varchar(255)……deleteByPrefix 用原前缀匹配即可,无需版本号机制兜底。
插件上线规范要求写的 32 字符阈值是过时数据,会导致开发者不必要地引入版本号机制增加复杂度。
矛盾 3:JS/CSS 存放目录
插件上线规范要求 | 项目 docs |
|---|---|
放 | 插件目录结构用 |
02-plugin-structure.md 的标准目录结构示例:
plugin/my_plugin/
├── view/
│ ├── htm/ # 插件模板
│ ├── css/ # 插件 CSS
│ └── js/ # 插件 JS
项目中不存在 static/ 目录约定。资源引用路径规范也需相应调整。
矛盾 4:hook 禁止 return 违反次数
插件上线规范要求 | 项目 docs |
|---|---|
已违反 4 次 | 已违反 5 次(bugfix_rules.md 第六节) |
bugfix_rules.md 更新为 5 次,新增了 xnx_feeds footer_js_after.htm 移动端检测 return 导致手机端 footer 后半段不渲染的案例。插件上线规范要求数据滞后。
矛盾 5:卸载清理 API
插件上线规范要求提到卸载时用 kv_delete('你的插件名') 清除 KV 数据、XnEvent::off(null, '你的插件名') 清理事件监听。
项目 docs 中不存在 kv_delete 和 XnEvent 这两个 API。docs 中的缓存清理统一用 CacheHelper::pluginDeletePrefix($plugin),事件机制是 plugin_hook() / 编译期 // hook 标记,没有 XnEvent::off 这个接口。这两个 API 是虚构的,需要替换为 docs 中实际存在的函数。
Bug反馈
- 程序版本:
- Xiunox 1.1.6
- PHP版本:
- php8.4
- MySql:
- no
- 复现步骤:
- 插件上架自检文档与项目实际开发规范 docs的矛盾
- 预期结果:


