使用模块扩展Pagekit
作为开发者,你可以轻松扩展Pagekit已有的功能。无论你想要自定义主题还是扩展以增加功能,两者都是遵循相同的方法构建的。在这篇文章及配套视频中,我们将介绍什么是软件包和模块——这两个都是Pagekit的核心概念。
视频地址(YouTube):https://www.youtube.com/watch?v=m6ntYDOCG4s
术语:软件包和模块
主题和延伸从外表看可能不同,但它们都是我们称之为一个整体的东西。包只是一个文件夹,里面包含了若干文件,并包含一个称为 的文件中的元数据。composer.json
要向 Pagekit 系统注册任何东西,你还会包含一个名为 的文件,里面包含了我们称之为模块的定义。模块是Pagekit规范中最重要的建筑单元。模块是自成一体的单元,将功能捆绑起来,并组合起来构成整个系统。模块既用于 Pagekit 核心,也用于任何第三方扩展中。index.php
包文件该放在哪里
每个软件包都属于一个特定的供应商名称,这在你查看新安装的 Pagekit 目录结构时就能看出来。
核心包是命名空间的一部分,并位于 内相应的子目录中。任何第三方套餐(包括你的!)都会有自己的供应商名称,因此会放在一个单独的子文件夹里。pagekit/packages
/packages
/pagekit
/blog
/theme-one
/your-vendor
/your-theme
/your-extension
每个包中你至少会发现两个文件:和。composer.jsonindex.php
1. composer.json:包元数据
该包包含了元数据。这用于在Pagekit后台显示,以及如果你把扩展文件上传到Pagekit市场时。composer.json
packages/pagekit/todo/composer.json
{
"name": "todo",
"version": "0.1",
"type": "pagekit-extension",
"title": "ToDo management"
}
2. index.php:模定义
模块将功能捆绑在 Pagekit 内部,是你连接 Pagekit 系统的方式。从代码角度看,模块定义是一个带有某些属性的PHP数组。总是必须 一个有效的数组。index.phpreturn
<?php
use Pagekit\Application;
// packages/pagekit/todo/index.php
return [
'name' => 'todo',
'type' => 'extension',
// called when Pagekit initializes the module
'main' => function (Application $app) {
echo "It's alive";
}
];
?>
为了测试功能,确保你在后台启用了扩展。激活时,你会在屏幕顶部看到打印出来的输出。
这个最小的例子展示了一个功能完整模块可以非常小。它能访问实例。通过这个对象,你可以访问所有服务,触发事件,并监听其他模块触发的事件。Application
这很直接,已经给了我们很大的权力。然而,模定义还有许多其他性质可用。我们将在接下来的文章中介绍其中一些。如果你不想等到那时,可以查看Pagekit文档中可用的模块属性。
以下是所有现有屏幕录制教程的简短列表: