Видеоуроки по Pagekit | Разработка

Видеоурок #02 - расширяем Pagekit с помощью модулей

Pagekit
Видеоурок #02 - расширяем Pagekit с помощью модулей

Если вы разработчик, то вы можете довольно легко расширить то, что предлагает 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. Используя этот объект, вы получаете доступ ко всем сервисам, можете вызывать события и слушать события, которые были вызваны другими модулями.

Оригинальная статья: