Модули

Модуль — это набор файлов, которые содержат некоторый функционал написанный на PHP. Они могут расширять, изменять или добавлять новый функционал на сайте.

Весь код, который пишется для Drupal, должен находиться в модулях. Модули разделяют на два типа:

  1. contrib - модули загруженные с drupal.org или иных источников, иным словами — сторонние.
  2. custom - модули написанные под конкретный проект разработчиком.

Местоположение модулей

Модули располагаются в директории /modules проекта. Drupal умеет анализировать весь проект и находить модули при любом уровне вложенности.

Примерная структура данной папки на проекте:

  └─ modules/
     ├─ module_name/
     ├─ example_module/
     └─ another_module/

У данного подхода есть недостатки:

  1. Со временем, на реальном проекте, становится невозможным отличить contrib модули от custom модулей. В связи с чем, появляются трудности с поддержкой проекта.
  2. При работе с VCS, вам придется в ручном режиме отделять contrib модули от custom, чтобы они не попадали в репозиторий.

В связи с этим, в сообществе имеется best practice по работе с данной директорией. В ней создаются две дополнительные папки, в которые уже и складываются модули: contrib и custom, соответственно. Модули, которые в них находятся, должны полностью соответствовать их названиям в соответствии с типами модулей.

При таком подходе, структура начинает выглядеть следующим образом:

  └─ modules/
     ├─ contrib/
     │  ├─ module_name/
     │  ├─ example_module/
     │  └─ another_module/
     └─ custom/
        └─ my_custom_module/

Это решает множество проблем и облегчает поддержку проекта. Многие инструменты также учитывают данный best practice. Например, Composer в ядре настроен таким образом, что все модули, запрошенные с drupal.org, будут автоматически устанавливаться в modules/contrib.

Загрузка модулей

Модули для Drupal, как правило, находятся на drupal.org. Для их загрузки вы можете воспользоваться страницей проекта, либо Composer.

При загрузке архива с модулем, вам необходимо самостоятельно распаковать файлы модуля в нужную директорию. При использовании Composer, всё будет сделано автоматически.

Заметка

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

Установка (включение) модулей

Для установки модулей, необходимо перейти на соответствующую административную страницу - "Расширения".

На данной странице вы можете отметить галочками все интересующие вас модули, после чего, нажать кнопку "Установка", которая произведёт инсталяцию модулей на сайт.

Совет

Вы можете включать модули при помощи команды Drush drush en MODULENAME.

Удаление (отключение) модулей

Если какой-то модуль вам больше не нужен, вы можете отключить его, путем запуска процесса удаления. Данная операция находится на административной странице "Расширения" во вкладке "Удалить".

На странице удаления, вы можете выбрать модули для удаления из списка активных (установленных) модулей. Для этого вам необходимо выбрать ненужные модули при помощи галочек и нажать на кнопку удаления.

Данная страница не позволит вам удалить модуль, если он является зависимостью для другого модуля, до тех пор, пока зависимость также не будет удалена.

В процессе удаления будут вызваны соответствующие события и операции, в результате которых модуль будет удалён с сайта, а все данные, которые модуль хранил, будут утеряны.

Обратите внимание на то, что удаление не влечет за собой физическое удаление файлов модуля, эта задача производится в ручном режиме.

Совет

Вы можете отключать модули при помощи команды Drush drush pmu MODULENAME.

Удаление (файлов) модулей

После того как вы отключили ненужные вам модули, вы можете их удалить, если они больше не нужны.

Удаление файлов модулей должно производится тем же способом, который был использован для их загрузки. Если вы загружали модуль руками с drupal.org, то файлы необходимо удалять также руками, если вы загружали зависимость при помощи Composer, то удалять необходимо его командами.

Предупреждение

Не удаляйте файлы модулей, если они активны на сайте, это приведет к неработоспособности сайта.

Смотрите также

💝 Помогите нам сделать документацию лучше!

Вся документация Druki с отрытым исходным кодом. Нашли ошибку или неточность? Создайте pull request.

Редактировать текущий документ Обсудить улучшение

Или узнайте как контрибутить.

🤔 По-прежнему нужна помощь?

Не нашли ответа на свой вопрос? Попросите помощи у сообщества!

Задайте вопрос на GitHub Смотрите другие ресурсы сообщества