Перейти к содержанию

Манифест модуля

Каждый модуль DevCraft описывается файлом manifest.php в каталоге devcraft/src/modules/{Name}/. Для админ-оболочки используется devcraft/src/modules/Admin/manifest.php.

Файл возвращает ассоциативный массив с ключами mod, code, meta, menu, ajax, changelog, assets.

Блок meta

Метаданные модуля для UI и ссылок:

Ключ Описание
name Отображаемое имя («DevCraft Admin»)
version Версия SemVer плагина
description Краткое описание
icon Иконка Metro UI (mif-*)
docsLink URL публичной документации
siteLink Страница загрузки на devcraft.club
author Имя, контакты, донаты

Массив пунктов меню, создаваемых через AdminLink::page():

PHP
AdminLink::page(__('Главная'), 'dashboard', DashboardPage::class, 'mif-home'),
  • slug — сегмент URL (action=dashboard);
  • класс страницы — реализация PageInterface;
  • иконка — Metro UI.

Страница без пункта в боковом меню (роутинг сохраняется через AdminLinkResolver):

PHP
AdminLink::hidden('edit', EditSuggestionPage::class),

Тип hidden не рендерится в navview, но ?action=edit продолжает открывать страницу.

Блок ajax

Регистрация AJAX-обработчиков:

PHP
1
2
3
4
5
6
7
'ajax' => [
    'controller' => 'admin',
    'methods'    => [
        'settings' => SettingsHandler::class,
        // ...
    ],
],

Имя контроллера передаётся в devcraft/ajax.php как controller=admin; метод — как method=settings. Для сателлитов обязателен mod={код модуля}. Каждый handler реализует AjaxHandlerInterface.

Блок assets

Подключаемые JS/CSS относительно каталога модуля, например:

PHP
'assets' => ['js' => ['admin.js']],

Блок changelog

Подключает changelog.data.php — массив изменений для страницы «История изменений».

Блок composer_required

Обязательные пакеты Composer для модуля. Агрегируются ManifestPackageReader из всех модулей реестра.

PHP
1
2
3
4
5
6
7
'composer_required' => [
    [
        'name'         => 'vendor/example-package',
        'minVersion'   => '^1.0',
        'hardRequired' => true,
    ],
],
Ключ Описание
name Имя пакета vendor/package
minVersion Минимальная версия / constraint
hardRequired true — пакет обязателен (Dashboard, колонка «Обязательный»); false — рекомендуемый

При дубликате имени в нескольких модулях модуль-источник — первый в порядке Registry; required=true, если любой модуль указал hardRequired: true.

Подробнее: Composer-пакеты модулей.

Регистрация модуля

Registry сканирует devcraft/src/modules/*/manifest.php и строит меню DLE через DleMenuBuilder. Подробнее: Registry, PluginContext.

См. также