Если вы разработчик, то вы можете довольно легко расширить то, что предлагает Pagekit. Неважно, хотите вы создать кастомную тему или расширение для дополнительной функциональности, все они создаются по одному и тому же принципу. В этом материале мы рассмотрим, что такое package (пакет) и module (модуль), которые являются основными концептами Pagekit.
Терминология: пакеты (packages) и модули (modules)
Хотя темы и расширения со стороны могут выглядеть по-разному, они оба называются пакетами (package). Пакет, это всего лишь папка, которая включает в себя некоторое количество файлов и содержит метаданные в файле под именем composer.json.
Для регистрации чего-либо в системе Pagekit, вы также должны включить файл под именем index.php, который содержит в себе определение модуля (module). Модули - это самостоятельные единицы, которые включают в себя функциональность, и соединены для формирования целой системы. Модули используются как в Pagekit, так и в сторонних расширениях.
Расположение файлов пакета
Каждый пакет принадлежит к конкретному имени вендора (vendor), что становится понятным, когда вы смотрите на структуру директорий свежей установки Pagekit.
Пакеты ядра являются частью пространства имён pagekit
и расположены в соответствующей поддиректории /packages. Любые сторонние пакеты (ваши!) должны иметь свое имя вендора и соответственно располагаться в отдельной поддиректории.
/packages /pagekit /blog /theme-one /your-vendor /your-theme /your-extension
В каждом пакете вы найдёте по крайней мере два файла: composer.json и index.php.
1. composer.json: метаданные пакета
Файл composer.json содержит метаданные пакета. Они используются для отображения в бэкэнде Pagekit, а также в магазине Pagekit.
packages/pagekit/todo/composer.json
{
"name": "todo",
"version": "0.1",
"type": "pagekit-extension",
"title": "ToDo management"
}
2. index.php: определение модуля
Модули включают в себя функциональность внутри Pagekit и являются для вас путём для внедрения в систему Pagekit. С точки зрения кода, определение модуля - это PHP массив, у которого установлены определённые свойства. Файл index.php всегда должен возвращать валидный массив.
use Pagekit\Application;
// packages/pagekit/todo/index.php
return [
'name' => 'todo',
'type' => 'extension',
// вызывается, когда Pagekit инициализирует модуль
'main' => function (Application $app) {
echo "It's alive";
}
];
Для того, чтобы протестировать функциональность, убедитесь в том, что вы включили расширение в панели управления Pagekit. Как только вы его включите, вы увидите сверху экрана надпись "It's alive".
Этот минимальный пример показывает, каким маленьким может быть модуль с полной функциональностью. У него есть доступ к объекту Application
. Используя этот объект, вы получаете доступ ко всем сервисам, можете вызывать события и слушать события, которые были вызваны другими модулями.