Drupal: Как создать модуль

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

Давайте посмотрим как создать модуль в Drupal версий 7 и 8.

Drupal 7

Содаваемый модуль должен отвечать следующим требованиям:

  1. Сам модуль должен иметь уникальное имя
  2. Иметь файл .info, содержащий:

    • Человеко читаемое имя
    • Описание модуля
    • Версия ядра, с которой совместим модуль
  3. Иметь файл .module, который может быть и пустым, если модуль не выполняет никаких функций.

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

  1. sites/all/modules/
  2. sites/[example.com]/modules
  3. sites/default/modules
  4. profiles/[install-profile]/modules

Помимо вышеперечисленных, еще папка modules/, которую я в списке не перечислил. Сделал я это умышленно, так как в этой папке храянтся модули, являющиеся частью базовой системы - никогда не следует размещать свои модули в ней.

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

sites/all/modules/mymodule/mymodule.info
sites/all/modules/mymodule/mymodule.module

Обратите внимание, что имя обоих файлов mymodule и это очень важно.

Как уже упоминалось выше, файл .module может быть пустым, а вот файл .info должен содержать минимальное количество информации:  Имя,
Описание модуля и Версию ядра, с которой совместим модуль.

В качестве примера, содержимое .info файла модуля mymodule будет выглядет так:

name = MyModule
description = "Custom module to check Drupal module building."
core = 7.x

Если вы все правильно сделали, как описано в инструкции, в списке модулей вы должны увидеть созданный модуль mymodule:

Drupal 8

Drupal 8, в плане создания модулей, содержит ряд новшеств, одно из которых - это то, что конфигурация теперь хранится в yaml файлах.

Модуль должен иметь:

  1. Уникальное имя.
  2. info yaml файл со следующим содержимым:

    • name: Человеко понятное имя модуля
    • type: Тип, указывающий что данный проект - это модуль
    • core: Версия ядра, с кторой данны модуль совместим. В нашем случае это 8.x.
  3. Файл module, имя которого состоим из машинного имени модуля и расшинерия .module. Сам файл может быть пустым.

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

  1. modules/
  2. sites/[example.com]/modules
  3. sites/default/modules
  4. profiles/[install-profile]/modules

Технически, Drupal ищет файл еще в папке core/modules, но в нее никогда не следует помещать самостоятельно созданные модули - эта папка предназначена только для модулей, составляющих ядро системы.

Структура папки модуля mymodule будет выглядет следюущим образом:

/modules/mymodule/mymodule.info.yml
/modules/mymodule/mymodule.module

Обратите внимание, что имя обоих файлов mymodule, и это очень важно.

Как уже упоминалось выше, файл .module может быть пустым, а вот файл .info должен содержать минимальное количество информации:  Человеко читаемое имя, парамтр, указывающий, что данный проект является модулем и версию ядра, с которой совместим модуль:

name: 'MyModule'
description: 'Custom module to check Drupal module building'
core: 8.x
type: module

Если вы все правильно сделали, как описано в инструкции, в списке модулей вы должны увидеть созданный модуль mymodule.

Тэги: 

Добавить комментарий

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешённые HTML-теги: <a> <s> <u> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <hr> <dd> <sub> <sup>
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Защита от СПАМ ботов. Подтвердите, пожалуйста, что вы человек.
5 + 15 =
Решите эту простую математическую задачу и введите результат. Например, для 1+3, введите 4.