Wie kann ich mein brandneues Modul von einer minimalen Version von Drupal 7 abhängig machen, die erforderlich ist, damit es einwandfrei funktioniert?

10

Ich entwickle ein brandneues Modul (es gibt noch keine Website, die es verwendet). Es erfordert eine bestimmte Drupal-Version, da der hook_taxonomy_term_view()in Drupal Core Version 7.17 eingeführte Hook verwendet wird .

Ich möchte vermeiden, dass mein Modul auf einer Site aktiviert wird, beispielsweise mit Drupal 7.16 oder früheren Versionen von Drupal Core. Höhere Versionen von Drupal über 7.17 sollten in Ordnung sein.

Meine Frage : Wie kann ich mein Modul von dieser Drupal 7.17-Version abhängig machen, die für mein Modul ein Minimum darstellt?

Hinweis: Ich brauche keine Lösung für Standorte, an denen das Modul bereits installiert ist. In solchen Drupal-Versionen vor 7.17 muss es also nicht deaktiviert werden.

kiamlaluno
quelle
Die Frage ist mit Hooks versehen , da es sich um einen Hook handelt, den ich in meinem Code verwenden sollte. Haken bedeutet nicht, dass ich nach einem Haken suche, den ich verwenden könnte; Ich bin offen für jede Lösung, mit der ich vermeiden kann, dass das Modul auf einer Site installiert wird, auf der Drupal 7.17 oder höher nicht verwendet wird.
Kiamlaluno
Sie können eine Nebenversion eines anderen Moduls von benötigen, dependencies[] = mymodule (1.12)aber es scheint, dass dies für den Kern nicht funktioniert.
AyeshK
@ AyeshK Äh! Das könnte interessant sein, wenn Sie mich auf ein Drupal-Kernmodul verweisen könnten, das immer aktiviert ist.
Kiamlaluno
Ich habe es mit dependencies[] = taxonomy (>7.17)und einigen anderen möglichen Versionsnummern versucht, aber es hat nicht funktioniert.
AyeshK

Antworten:

11

Der Trick besteht anscheinend darin, das Systemmodul wie folgt zu verwenden:

dependencies[] = system (>=7.17)
Tsvenson
quelle
4
Dies ist die richtige. Quelle: dww und ich haben den versionierten Abhängigkeitsprüfer geschrieben. Ich habe darüber unter drupal4hu.com/node/274 gebloggt und jetzt auch die entsprechende Handbuchseite unter drupal.org/node/542202 hinzugefügt .
7

hook_requirements() existiert für genau diesen Zweck.

Überprüfen Sie die Installationsanforderungen und führen Sie Statusberichte durch.

Sie können den $phaseParameter überprüfen , um festzustellen, ob das Modul installiert wird, die aktuelle Drupal-Version mit Ihrer erforderlichen Version vergleichen und einen Schweregrad von zurückgeben REQUIREMENT_ERROR. Dadurch wird verhindert, dass das Modul installiert wird, bis die Anforderung erfüllt ist.

Die Dokumentation ist ziemlich gründlich. Erwähnenswert ist hier, dass der Hook in der Installationsdatei des Moduls implementiert werden muss.

Clive
quelle
Dies ist nicht die richtige Antwort. Ich habe keine Ahnung, warum es so stark positiv bewertet wird.
@chx Ich nehme Ihr Wort dafür, aber in diesem Fall die Beschreibung der Funktion "Installationsanforderungen prüfen und Statusberichte erstellen". ist etwas irreführend, nicht wahr? Wir sprechen schließlich speziell über die Überprüfung der Modulanforderungen bei der Installation :)
Clive
1
@Chapabu Nicht gemäß den Dokumenten :) Es handelt sich speziell um Module und es wird grundsätzlich empfohlen, diesen Hook für die Rückkehr REQUIREMENT_ERRORzu verwenden, um sicherzustellen, dass ein Modul nicht installiert ist, wenn es die Anforderungen nicht erfüllt. Ich hatte die Überprüfung der Version von Drupal sei ein gültiger Anwendungsfall war (die Dokumentation nicht erwähnt nicht tun , dass) , aber ich denke , ich etwas verpasst haben. Es könnte nur eine schlechte Übung sein oder etwas, das ich nicht weiß
Clive
1
@Clive Weird, keine Ahnung, woher ich das von da habe ... vielleicht sollte D8 nur ein Docs-Upgrade sein ;-)
Chapabu
1
@chx Du musst meine Unwissenheit entschuldigen, habe das noch nie gemacht ... geht das Problem gegen D8 und wird dann zurückportiert? Muss sich Ihrer Meinung nach der gesamte Text ändern oder muss nur ein Hinweis angegeben werden, dass dieser Hook nicht verwendet werden soll, um nach Modul- / Kernversionen, nur Bibliotheksanforderungen usw. zu suchen (mit einem Link zu den von Ihnen genannten Dokumenten)? Danke
Clive
2

Sie könnten den hook_enabled verwenden

Dies würde nach der Installation des Moduls ausgelöst. Sie können die installierte Version des Drupals überprüfen. Wenn es sich nicht um die richtige Version handelt, verwenden Sie module_disable und geben Sie die erforderliche Fehlermeldung aus.

Mohammed Shameem
quelle