Я разрабатываю новый модуль (пока еще нет сайтов, использующих его). Требуется конкретная версия Drupal, так как она использует hook_taxonomy_term_view()
хук, представленный в базовой версии Drupal 7.17 .
Я хочу избежать включения моего модуля на сайте с использованием, например, Drupal 7.16 или любых более ранних версий ядра Drupal. Более высокие версии Drupal, выше 7.17, должны подойти.
Мой вопрос : Как я могу сделать свой модуль зависимым от той версии Drupal 7.17, которая является минимальной для моего модуля?
Примечание: мне не нужно (нужно беспокоиться) решение для сайтов, где модуль уже установлен. Так что нет необходимости его как-то отключать в таких версиях Drupal до 7.17.
dependencies[] = mymodule (1.12)
но кажется, что это не работает для ядра.dependencies[] = taxonomy (>7.17)
некоторыми другими возможными номерами версий, но не работал.Ответы:
Хитрость, по-видимому, заключается в использовании системного модуля, например:
источник
hook_requirements()
существует именно для такой цели.Вы можете проверить
$phase
параметр, чтобы определить, устанавливается ли модуль, проверить текущую версию Drupal в соответствии с требуемой версией и вернуть серьезностьREQUIREMENT_ERROR
. Это предотвратит установку модуля, пока не будет выполнено требование.Документация довольно тщательна, здесь стоит упомянуть одну вещь, которую необходимо реализовать в файле модуля .install.
источник
REQUIREMENT_ERROR
чтобы убедиться, что модуль не установлен, если он не соответствует требованиям. Я предположил, что проверка версии Drupal была допустимым вариантом использования (в документах не упоминается , что я этого не делал), но, думаю, я что-то пропустил. Это может быть просто плохая практика или что-то, чего я не знаюВы могли бы использовать hook_enabled
Это будет срабатывать после установки модуля. Вы можете проверить версию установленного drupal и, если это не правильная версия, использовать module_disable и выдать необходимое сообщение об ошибке.
источник