跳至主要内容
屏幕录像 02 使用模块扩展Pagekit

使用模块扩展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文档中可用的模块属性

以下是所有现有屏幕录制教程的简短列表: