Existe-t-il un moyen de changer l'ordre d'exécution de hook_form_alter dans Drupal 7 sans changer le poids d'un module ou pirater Drupal Core?
J'essaie de modifier l'élément ajouté dans translation_form_node_form_alter à partir du module de traduction. Lors du débogage du formulaire, je ne trouve pas l'élément, donc je suppose que mon hook est en cours d'exécution avant celui du module de traduction.
hook_form_FORM_ID_alter()
je crois que vous ne devriez pas du tout avoir à modifier le poids (car tous leshook_form_FORM_ID_alter()
appels sont effectués après touthook_form_BASE_FORM_ID_alter()
).drupal_prepare_form()
etdrupal_alter()
. J'avais déjà remarqué que les documents semblaient éteints, j'ai donc créé un problème . Vous ne savez pas pourquoi cela ne fonctionne pas pour vous sans modifier le poids du système!Il convient également de mentionner, il existe une nouvelle API drupal 7 appelée hook_module_implements_alter () qui vous permet de modifier l'ordre d'exécution pour un crochet donné SANS modifier la table des poids du module.
Exemple de code à partir des documents de l'API montrant à quel point cela est facile:
la source
Voici comment vous assurer que votre hook_form_alter est appelé après un autre module hook_form_alter:
Cela fonctionne également lorsque l'autre module a fourni un crochet form_alter dans la variante: hook_form_FORM_ID_alter. (ils expliquent cela dans la documentation: hook_module_implements_alter ).
Je sais que ce message est assez similaire au message de wiifm, mais l'a trouvé utile avec un exemple avec hook_form_alter
la source