[文档] 插件开发入门(manifest / 迁移 / 独立页)
#1楼主YeCha Team· 144 查看
插件开发入门
一个第三方插件 = plugins/<id>/ 目录 + 一个返回数组的 plugin.php 清单。
manifest 字段
| 字段 | 说明 | |
|---|---|---|
| id / name / ver / desc / author / license | 基础信息 | |
| requires.core | 最低内核版本 | |
| toggle | 是否可在后台停用(默认 true) | |
| tables | 自有表(缺表时自动跑 migrations) | |
| uninstall | ['tables'=>..,'options'=>..,'like'=>..] 卸载清理项 | |
| admin | ['label'=>'菜单名','desc'=>..] 后台菜单 | |
| pages | [['slug'=>'my-page','title'=>'标题']] 前台独立页 | |
| page_file / page_fn | 独立页实现文件与函数(函数接收 slug,返回 ['html'=>..,'title'=>..]) | |
| admin_file / admin_fn | 后台页实现(函数返回 html) | |
| blocks | 侧栏块清单;register_file | 启用时 include(注册 Hooks 等) |
迁移
migrations/2026xxxx_xxx.php|sql:幂等建表即可,例如:
$t = Db::t('my_table');
Db::run("CREATE TABLE IF NOT EXISTS {$t} ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY ) ...");独立页示例(仿 /forum)
function yc_my_page(string $slug): array {
return ['html' => '<h1>Hello</h1>', 'title' => 'Hello'];
}安全约定
- 所有 POST 必须
Csrf::field()表单内 + 服务端Csrf::check() - 输出一律
e()转义;Markdown 渲染请用内核Markdown::render(自带转义与 URL 白名单) - 写库表名一律
Db::t('name')(自动加ye_前缀) - 页面高权限操作记得
Auth::isAdmin()校验
上架
包成 zip(根目录即内容),去官网「市场 → 申请上架」:官方会做下载/结构/清单/PHP 语法/SHA 校验后发布。
0 条回复
还没有回帖,坐个沙发吧。
登录后即可参与回帖。 去登录 →