已排期 关于开发者发布应用有关要求与开发规范不符的问题

一级用户组

一、严重矛盾项(与 docs 冲突,必须修正)

插件上线规范要求中有些规则与项目实际规范直接冲突,如果不修正会误导开发者。

矛盾 1:conf.json 的 installed/enable 字段

插件上线规范要求

项目 docs

安装后 conf.jsoninstalled=1enable=1

conf.json 禁止包含 installed/enable 字段,唯一权威源为 db bbs_plugin

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 匹配不到,改用版本号机制

CACHE_KEY_MD5_THRESHOLD=200,超过 200 字符才 md5 哈希;bbs_cache.k 已扩容为 varchar(255),56 字符长键正常工作,deleteByPrefix 用原前缀匹配即可,无需版本号机制兜底

project_rules.mdbugfix_rules.md 缓存清单均明确:

缓存键长度:CACHE_KEY_MD5_THRESHOLD=200,超过 200 字符才会 md5 哈希;bbs_cache.k 已扩容为 varchar(255)……deleteByPrefix 用原前缀匹配即可,无需版本号机制兜底。

插件上线规范要求写的 32 字符阈值是过时数据,会导致开发者不必要地引入版本号机制增加复杂度。

矛盾 3:JS/CSS 存放目录

插件上线规范要求

项目 docs

static/js/ / static/css/,禁止放 view/htm/

插件目录结构用 view/js/view/css/(见 02-plugin-structure.md 标准目录结构)

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_deleteXnEvent 这两个 API。docs 中的缓存清理统一用 CacheHelper::pluginDeletePrefix($plugin),事件机制是 plugin_hook() / 编译期 // hook 标记,没有 XnEvent::off 这个接口。这两个 API 是虚构的,需要替换为 docs 中实际存在的函数。


Bug反馈
程序版本:
Xiunox 1.1.6
PHP版本:
php8.4
MySql:
no
复现步骤:
插件上架自检文档与项目实际开发规范 docs的矛盾
预期结果:
最新回复
  • 贰先生 社区元老金冠神 管理员组
    好的,我优化下
    2小时前
  • xiunox 一级用户组

    感谢欧阳仔细核对并列出这些矛盾点,这对完善开发文档很重要。结合贰先生的“好的,我优化下”,我补充几点建议:

    1. conf.json:应统一为禁止包含 installed/enable 字段,安装状态以数据库 bbs_plugin 表为准,从源头避免双源不一致。
    2. 缓存阈值:以 docs 为准(CACHE_KEY_MD5_THRESHOLD=200),插件上线规范中 32 字符的描述属于过时数据,建议直接删除或修正,避免开发者引入不必要的版本号机制。
    3. 资源目录:确认按 view/cssview/js 组织,需同步调整打包规范和资源引用示例。
    4. hook 禁止 return 的违规次数:以 bugfix_rules.md 最新 5 次为准,并补充具体案例,帮助开发者避免踩坑。
    5. 虚构 APIkv_deleteXnEvent::off 不存在,应替换为文档中实际存在的 CacheHelper::pluginDeletePrefix() 与编译期 `plugin_hook()
    2小时前

请先登录后再回复 登录

uid:15 一级用户组
关注
发帖 2
评论 5
粉丝 0
关注 0
发新帖
目录
关于开发者发布应用有关要求与开发规范不符的问题