Как я могу сделать свой новый модуль зависимым от минимальной версии Drupal 7, которая необходима для его нормальной работы?

10

Я разрабатываю новый модуль (пока еще нет сайтов, использующих его). Требуется конкретная версия Drupal, так как она использует hook_taxonomy_term_view()хук, представленный в базовой версии Drupal 7.17 .

Я хочу избежать включения моего модуля на сайте с использованием, например, Drupal 7.16 или любых более ранних версий ядра Drupal. Более высокие версии Drupal, выше 7.17, должны подойти.

Мой вопрос : Как я могу сделать свой модуль зависимым от той версии Drupal 7.17, которая является минимальной для моего модуля?

Примечание: мне не нужно (нужно беспокоиться) решение для сайтов, где модуль уже установлен. Так что нет необходимости его как-то отключать в таких версиях Drupal до 7.17.

киамлалуно
источник
Вопрос в том, чтобы пометить хуки, потому что речь идет о хуке, который я должен использовать в своем коде. крючки не означают, что я ищу крючок, который мог бы использовать; Я открыт для любого решения, которое позволяет мне избежать установки модуля на сайт, не использующий Drupal 7.17 или выше.
kiamlaluno
Вы можете потребовать дополнительную версию какого-то другого модуля, dependencies[] = mymodule (1.12)но кажется, что это не работает для ядра.
AyeshK
@AyeshK Э-э! Теперь это может быть интересно, если бы вы указали мне на модуль ядра Drupal, который всегда включен.
kiamlaluno
Я попробовал это и с dependencies[] = taxonomy (>7.17)некоторыми другими возможными номерами версий, но не работал.
AyeshK

Ответы:

11

Хитрость, по-видимому, заключается в использовании системного модуля, например:

dependencies[] = system (>=7.17)
tsvenson
источник
4
Это правильный. Источник: dww, и я написал версионную проверку зависимостей. Я написал об этом в drupal4hu.com/node/274 и теперь добавляю на страницу соответствующего справочника по адресу drupal.org/node/542202 .
7

hook_requirements() существует именно для такой цели.

Проверьте требования к установке и сделайте отчет о состоянии.

Вы можете проверить $phaseпараметр, чтобы определить, устанавливается ли модуль, проверить текущую версию Drupal в соответствии с требуемой версией и вернуть серьезность REQUIREMENT_ERROR. Это предотвратит установку модуля, пока не будет выполнено требование.

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

Клайв
источник
Это неправильный ответ. Я понятия не имею, почему за него так сильно проголосовали.
@chx, поверьте на слово, но в этом случае описание функции «Проверьте требования к установке и создайте отчет о состоянии». несколько вводит в заблуждение не так ли? В конце концов, речь идет именно о проверке требований к модулям при установке :)
Клайв
1
@Chapabu Не в соответствии с документацией :) В нем говорится конкретно о модулях, и в основном говорится, чтобы использовать этот хук, чтобы вернуться, REQUIREMENT_ERRORчтобы убедиться, что модуль не установлен, если он не соответствует требованиям. Я предположил, что проверка версии Drupal была допустимым вариантом использования (в документах не упоминается , что я этого не делал), но, думаю, я что-то пропустил. Это может быть просто плохая практика или что-то, чего я не знаю
Клайв
1
@ Clive Странно, не знаю, откуда я это взял ... может быть, D8 будет просто обновлением документации ;-)
Chapabu
1
@chx Тебе придется извинить мое невежество, никогда раньше этого не делал ... проблема идет против D8, а затем портируется? По вашему мнению, нужно ли менять весь текст или нужно просто отметить, что не нужно использовать этот хук для проверки версий модулей / ядер, только требований к библиотеке и т. Д. (Со ссылкой на упомянутые вами документы)? Спасибо
Клайв
2

Вы могли бы использовать hook_enabled

Это будет срабатывать после установки модуля. Вы можете проверить версию установленного drupal и, если это не правильная версия, использовать module_disable и выдать необходимое сообщение об ошибке.

Мохаммед Шамим
источник