Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Первый модуль

Модуль — папка с файлами, которая добавляет сайту новые возможности. Самый маленький модуль состоит из одного файла описания. Он ничего не делает, но 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 blog

Drush напечатает, что модуль 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 не найдёт.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.