包
包是 Pagekit 用来扩展其功能的概念。软件包分为两种类型:扩展和主题。
包裹位置
所有包都存放在目录中,按供应商按子目录排序。/packages
每个套餐都属于特定的供应商——例如所有官方套餐,包括博客扩展和One主题。pagekit
供应商名称是开发者或组织的唯一代表。最简单的情况是,它只是匹配一个GitHub用户名。包名还会定义它所存储的目录名称。
包装内容
一个包至少包含两个文件。
- 包含包的元数据,因此作为包定义。
composer.json - 这是一个所谓的模块定义,为Pagekit添加了实际功能。
index.php
包的其余内容取决于包的 。想了解更多关于包的实际内容,可以查看主题教程或扩展教程。type
封装定义
一个包由其定义。该文件包含包名、Composer可能安装的依赖以及在Pagekit市场中显示的其他信息。composer.json
对于一个主题,这个文件可以如下样子。
{
"name": "pagekit/theme-hello",
"type": "pagekit-theme",
"version": "0.9.0",
"title": "Hello",
"description": "A blueprint to develop your own themes.",
"license": "MIT",
"authors": [
{
"name": "Pagekit",
"email": "该 Email 地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。 ",
"homepage": "http://pagekit.com"
}
],
"extra": {
"image": "image.jpg"
}
}
有关该文件的更多细节,请参见作曲家文档。
安装钩子
一个软件包可以是启用、禁用或未安装的。更改状态时,你可能需要修改数据库模式或运行其他自定义代码。
Pagekit 通过自定义脚本文件提供安装钩子。这个文件需要在你的包定义中定义,也就是文件。composer.json
"extra": {
"scripts": "scripts.php"
}
自定义脚本文件必须返回包含回调的PHP数组。
return [
'install' => function ($app) {},
'uninstall' => function ($app) {},
'enable' => function ($app) {},
'disable' => function ($app) {},
'updates' => [
'0.5.0' => function ($app) {},
'0.9.0' => function ($app) {}
]
];
安装
安装钩子是在软件包安装后执行的。
卸载
卸载钩子是在软件包卸载之前执行的。
即使你的扩展在管理面板中被禁用或卸载,Pagekit 也不会修改你创建的表格。你需要自己处理必要的数据库更改。
启用
启用钩子是在包被启用后执行的。
停用
禁用钩子在包被禁用之前执行。
更新
启用包后,Pagekit 会检查是否有比当前版本更新的更新钩子可用。如果是这样,它们会按顺序执行。