Первый модуль
Модуль — папка с файлами, которая добавляет сайту новые возможности. Самый маленький модуль состоит из одного файла описания. Он ничего не делает, но Drupal уже видит его и позволяет включить.
Папка модуля
Создайте папку вручную:
mkdir -p web/modules/custom/blogИмя папки — машинное имя модуля. В нём допустимы строчные латинские буквы, цифры и подчёркивания, первой идёт буква. Это имя станет приставкой для всех файлов и функций модуля и частью пространства имён классов.
Файл описания
В папке модуля создайте файл blog.info.yml:
# web/modules/custom/blog/blog.info.yml
name: Blog
type: module
description: 'Страница блога, форма подписки и блок свежих статей.'
package: Custom
core_version_requirement: ^10.3 || ^11| Ключ | Что означает |
|---|---|
name | Название в списке модулей |
type | Вид расширения: module или theme |
description | Пояснение под названием |
package | Группа в списке модулей |
core_version_requirement | С какими версиями Drupal модуль совместим |
Обязательны name, type и core_version_requirement. Имя файла должно совпадать с именем папки: blog/blog.info.yml.
Включение
vendor/bin/drush en blogDrush напечатает, что модуль blog включён. Проверить это можно и в панели: откройте «Расширения» по адресу /admin/modules — в группе Custom появится строка Blog с отметкой.
Список включённых модулей показывает и команда:
vendor/bin/drush pml --status=enabled --type=moduleЗависимости
Если модулю нужны другие модули, их перечисляют в том же файле:
# web/modules/custom/blog/blog.info.yml
dependencies:
- drupal:nodeЗапись состоит из имени проекта и имени модуля. drupal:node — модуль материалов из ядра. Теперь при включении blog Drupal проверит, что материалы включены, и не даст отключить их, пока работает blog.
Отключение
vendor/bin/drush pmu blogКоманда отключает модуль и удаляет его данные: настройки и таблицы. Сами файлы остаются на месте, и модуль можно включить заново.
Создание командой
Заготовку модуля умеет создавать Drush: команда drush generate module задаёт несколько вопросов и создаёт папку с файлами. В курсе файлы создаются вручную — так понятнее, зачем нужен каждый.
Частая ошибка
Файл blog.info.yml читается один раз, а потом хранится в кеше. Если вы изменили название, описание или зависимости, а в панели всё по-старому, выполните drush cr. Вторая частая причина — несовпадение имён: папка blog, а файл my_blog.info.yml. Такой модуль в списке появится под именем файла, но остальные файлы с приставкой blog. Drupal не найдёт.