插件包制作与上架指南

本页面向插件开发者,说明如何制作可通过本市场校验并上架的 PbootCMS 插件包。上架后:自动校验 → 展示在市场货架 → 客户站通过插件中心一键安装。

一、包结构要求

插件包是一个 .zip 压缩文件,manifest.php 必须位于包根目录,或位于唯一的顶层目录内(推荐后者,解压不散落):

my_plugin.zip
└── my_plugin/            ← 唯一顶层目录(推荐)
    ├── manifest.php       ← 必备:安装清单(权威信息来源)
    ├── apps/              ← 后台控制器与视图
    │   ├── admin/
    │   │   ├── MypluginController.php
    │   │   └── view/
    │   └── home/          ←(如有前台功能)
    ├── install/           ←(如有建表 SQL)
    │   └── my_plugin.sql
    └── assets/
        └── cover.png      ← 可选:默认封面图(未上传封面时自动提取)
打包前请删除运行期产物:install.log、installed.json、backup/、install.lock。这些是安装器在客户站生成的文件,打进包里会污染客户站。

二、manifest.php 字段规范

manifest.php 必须返回数组,系统按它校验与安装。包内 manifest 信息为权威数据,市场商品信息以其为准:

<?php
/**
 * 插件安装清单
 */
return array(
    'code'    => 'my_plugin',          // 必备:插件唯一标识
    'name'    => '我的插件',            // 必备:插件名称
    'version' => '1.0.0',             // 必备:版本号
    'desc'    => '一句话功能说明',
    'author'  => '开发者署名',
    'min_php' => '7.4',               // 可选:最低 PHP 版本(如 7.4 / 8.0)
    'sql'     => array('install/my_plugin.sql'),   // 建表 SQL(相对包内路径)
    'menus'   => array(               // 后台菜单(见下方菜单规范)
        array('mcode' => 'M270', 'pcode' => '0',    'name' => '我的插件',   'url' => '/admin/Myplugin/index', 'sorting' => 935, 'ico' => 'fa-plug',   'status' => '1'),
        array('mcode' => 'M271', 'pcode' => 'M270', 'name' => '功能列表',   'url' => '/admin/Myplugin/index', 'sorting' => 1,   'ico' => 'fa-list',   'status' => '1'),
        array('mcode' => 'M272', 'pcode' => 'M270', 'name' => '插件设置',   'url' => '/admin/Myplugin/setting', 'sorting' => 2, 'ico' => 'fa-cog',  'status' => '1'),
    ),
    'routes'  => array(
        'admin/Myplugin' => 'admin/plugin.Myplugin',
    ),
    'tables'  => array('my_table'),   // 本插件的数据表(卸载提示用)
    'config'  => array(               // 站点配置项(安装时写入 ay_config)
        array('name' => 'my_plugin_enabled', 'value' => '1', 'type' => '1', 'description' => '启用开关'),
    ),
    'depends' => array(),             // 依赖的其他插件 code
);
字段要求
code必备。小写字母开头,仅含小写字母/数字/下划线/连字符,2-50 位;上架后不可更换
name / version必备。字符串类型
min_php可选。格式如 7.4、8.0
menus可选。若定义则必须包含至少一个子菜单项(pcode 非 0)——顶级菜单仅作分组展开,真实链接全部由子项承载
config[].description插件配置项描述不超过 30 字符(对应数据库 varchar(30),超长会导致安装失败回滚)

三、后台菜单规范(menus)

  • 结构固定为「顶级 + 子菜单」两级:顶级项(pcode=0)只做分组面板,每个功能页一条子项
  • mcode 全市场唯一:M240 段已被现有插件占用,新插件请从 M270 起顺延编号(顶级 M270,子项 M271、M272…)
  • 顶级菜单 sorting 使用 935-990 区间(898-930 已被现有插件占用),装/卸时菜单按此值恢复
  • 子菜单 url 指向真实功能页;ico 使用 FontAwesome 类名

四、开发红线(违反一律不予上架)

  • 禁止修改 PbootCMS 原生文件——需要挂载点(如前台输出钩子)由安装器统一处理,插件自身不得携带对 core/、apps/ 原生文件的改动
  • 禁止在插件内硬编码站点相关配置(域名、密钥、端口等),站点级配置一律走 config/ext/ 独立文件,安装器自动落位且卸载时保留
  • 禁止携带任何形式的远程代码下载执行、webshell、混淆加密代码
  • 应当兼容 PHP 7.4 ~ 8.x,SQL 使用 PDO 预处理(参照现有插件写法)
  • 应当提供后台设置页(两栏布局:左侧设置表单、右侧完整使用文档)

五、上架前自检清单

  1. zip 根目录(或唯一顶层目录)内含 manifest.php,返回数组、三个必备字段齐全
  2. code 符合命名规则且与市场已有插件不重复
  3. menus 包含子菜单项,mcode/sorting 未与现有插件冲突
  4. config 每项 description ≤ 30 字符
  5. 已排除 install.log / installed.json / backup/ / install.lock
  6. 已在干净的 PbootCMS 环境实测安装 → 使用 → 卸载 → 重装全流程无报错

六、在线自检工具

选择插件 zip 包立即自检,文件仅在浏览器本地解析,不会上传到服务器:

七、上架流程

  1. 按本指南完成插件包制作与自检
  2. 联系市场管理员(附 zip 包与功能说明),由管理员在后台上传
  3. 系统按《插件标准》自动校验(结构 / manifest / 菜单),校验通过即上架展示
  4. 上架后可继续维护版本:提交新版本 zip(code 不变、版本号递增),市场信息与已购授权保留

参考实现:现有各插件(如 hot_words、site_backup)的 manifest 写法即为标准范例。