跳至主要内容

包是 Pagekit 用来扩展其功能的概念。软件包分为两种类型:扩展和主题。

包裹位置

所有包都存放在目录中,按供应商按子目录排序。/packages

每个套餐都属于特定的供应商——例如所有官方套餐,包括博客扩展和One主题。pagekit

供应商名称是开发者或组织的唯一代表。最简单的情况是,它只是匹配一个GitHub用户名。包名还会定义它所存储的目录名称。

包装内容

一个包至少包含两个文件。

  1. 包含包的元数据,因此作为包定义。composer.json
  2. 这是一个所谓的模块定义,为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 会检查是否有比当前版本更新的更新钩子可用。如果是这样,它们会按顺序执行。