Comment puis-je rendre mon tout nouveau module dépendant d'une version minimale de Drupal 7 qui est nécessaire pour qu'il fonctionne correctement?

10

Je développe un tout nouveau module (aucun site ne l'utilise encore). Il nécessite une version Drupal spécifique, car il utilise le hook_taxonomy_term_view()hook introduit dans Drupal core version 7.17 .

Je veux éviter que mon module ne soit activé sur un site utilisant, par exemple, Drupal 7.16 ou toute version antérieure de Drupal core. Les versions supérieures de Drupal, supérieures à 7.17, devraient être correctes.

Ma question : Comment puis-je rendre mon module dépendant de cette version Drupal 7.17, qui est un minimum pour mon module?

Remarque: je n'ai pas besoin (je dois m'inquiéter) d'une solution pour les sites où le module est déjà installé. Il n'est donc pas nécessaire de le désactiver d'une manière ou d'une autre dans ces versions Drupal antérieures à 7.17.

kiamlaluno
la source
La question porte sur les crochets car il s'agit d'un crochet que je devrais utiliser dans mon code. crochets ne signifie pas que je cherche un crochet que je pourrais utiliser; Je suis ouvert à toute solution me permettant d'éviter que le module ne soit installé sur un site n'utilisant pas Drupal 7.17, ou supérieur.
kiamlaluno
Vous pouvez exiger une version mineure d'un autre module dependencies[] = mymodule (1.12)mais il semble que cela ne fonctionne pas pour le noyau.
AyeshK
@AyeshK Euh! Maintenant, cela pourrait être intéressant, si vous pouviez me diriger vers un module de base Drupal qui est toujours activé.
kiamlaluno
Je l'ai essayé avec dependencies[] = taxonomy (>7.17)et d'autres numéros de version possibles, mais cela n'a pas fonctionné.
AyeshK

Réponses:

11

L'astuce, apparemment, est d'utiliser le module système comme:

dependencies[] = system (>=7.17)
tsvenson
la source
4
C'est le bon. Source: dww et j'ai écrit le vérificateur de dépendance versionné. J'ai blogué à ce sujet sur drupal4hu.com/node/274 et maintenant ajouté à la page du manuel correspondant sur drupal.org/node/542202 également.
7

hook_requirements() existe exactement pour ce genre de but.

Vérifiez les exigences d'installation et effectuez des rapports d'état.

Vous pouvez vérifier le $phaseparamètre pour déterminer si le module est en cours d'installation, vérifier la version actuelle de Drupal par rapport à votre version requise et renvoyer une gravité de REQUIREMENT_ERROR. Cela empêchera le module d'être installé jusqu'à ce que la condition soit remplie.

La documentation est assez complète, la seule chose qui mérite d'être mentionnée ici est que le hook doit être implémenté dans le fichier .install du module.

Clive
la source
Ce n'est pas la bonne réponse, je n'ai aucune idée pourquoi c'est si fortement voté.
@chx Je vais vous croire sur parole, mais dans ce cas, la description de la fonction "Vérifier les exigences d'installation et faire des rapports d'état". est quelque peu trompeur n'est-ce pas? Après tout, nous parlons spécifiquement de la vérification des exigences du module lors de l'installation :)
Clive
1
@Chapabu Pas selon les documents :) Il parle spécifiquement des modules, et dit essentiellement d'utiliser ce crochet pour revenir REQUIREMENT_ERRORpour vous assurer qu'un module n'est pas installé s'il échoue aux exigences. J'avais supposé que la vérification de la version de Drupal était un cas d'utilisation valide (les documents ne mentionnent pas de ne pas le faire) mais je suppose que j'ai raté quelque chose. Ce pourrait être une mauvaise pratique ou quelque chose que je ne sais pas
Clive
1
@Clive Weird, ne sais pas d'où je l'ai obtenu à partir de là ... peut-être que D8 devrait juste être une mise à niveau de documentation ;-)
Chapabu
1
@chx Vous devrez excuser mon ignorance, je n'ai jamais fait cela auparavant ... le problème va-t-il contre D8 et est-il ensuite rétroporté? À votre avis, l'ensemble du texte doit-il être modifié ou a-t-il simplement besoin d'une note mentionnant de ne pas utiliser ce crochet pour vérifier les versions de module / noyau, uniquement les exigences de la bibliothèque, etc. (avec un lien vers les documents que vous avez mentionnés)? Merci
Clive
2

Vous pouvez utiliser le hook_enabled

Cela se déclencherait après l'installation du module. Vous pouvez vérifier la version de drupal installée et si ce n'est pas la bonne version, utilisez module_disable et donnez le message d'erreur requis.

Mohammed Shameem
la source