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.
dependencies[] = mymodule (1.12)
mais il semble que cela ne fonctionne pas pour le noyau.dependencies[] = taxonomy (>7.17)
et d'autres numéros de version possibles, mais cela n'a pas fonctionné.Réponses:
L'astuce, apparemment, est d'utiliser le module système comme:
la source
hook_requirements()
existe exactement pour ce genre de but.Vous pouvez vérifier le
$phase
paramè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é deREQUIREMENT_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.
la source
REQUIREMENT_ERROR
pour 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 pasVous 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.
la source