插件包是一个 .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
/**
* 插件安装清单
*/
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),超长会导致安装失败回滚) |
pcode=0)只做分组面板,每个功能页一条子项mcode 全市场唯一:M240 段已被现有插件占用,新插件请从 M270 起顺延编号(顶级 M270,子项 M271、M272…)sorting 使用 935-990 区间(898-930 已被现有插件占用),装/卸时菜单按此值恢复url 指向真实功能页;ico 使用 FontAwesome 类名core/、apps/ 原生文件的改动config/ext/ 独立文件,安装器自动落位且卸载时保留manifest.php,返回数组、三个必备字段齐全code 符合命名规则且与市场已有插件不重复description ≤ 30 字符install.log / installed.json / backup/ / install.lock选择插件 zip 包立即自检,文件仅在浏览器本地解析,不会上传到服务器:
code 不变、版本号递增),市场信息与已购授权保留参考实现:现有各插件(如 hot_words、site_backup)的 manifest 写法即为标准范例。