Gibt es eine Möglichkeit, die Ausführungsreihenfolge von hook_form_alter in Drupal 7 zu ändern, ohne das Gewicht eines Moduls zu ändern oder Drupal Core zu hacken?
Ich versuche, das in translation_form_node_form_alter hinzugefügte Element aus dem Übersetzungsmodul zu ändern . Beim Debuggen des Formulars kann ich das Element nicht finden, daher gehe ich davon aus, dass mein Hook vor dem im Übersetzungsmodul ausgeführt wird.
hook_form_FORM_ID_alter()
ist mein Verständnis, dass Sie das Gewicht überhaupt nicht ändern müssen (weil schließlich allehook_form_FORM_ID_alter()
Anrufe getätigt werdenhook_form_BASE_FORM_ID_alter()
).drupal_prepare_form()
und andrupal_alter()
. Ich hatte bereits bemerkt, dass die Dokumente deaktiviert waren, also habe ich ein Problem erstellt . Keine Ahnung, warum es bei Ihnen nicht funktioniert, ohne das Systemgewicht zu ändern!Erwähnenswert ist auch, dass es eine neue Drupal 7-API namens hook_module_implements_alter () gibt, mit der Sie die Ausführungsreihenfolge für einen bestimmten Hook ändern können, ohne die Modulgewichtstabelle zu ändern.
Beispielcode aus den API-Dokumenten, der zeigt, wie einfach dies ist:
quelle
So stellen Sie sicher, dass Ihr hook_form_alter nach einem anderen Modul aufgerufen wird hook_form_alter:
Dies funktioniert auch, wenn das andere Modul einen form_alter-Hook in der Variation: hook_form_FORM_ID_alter bereitgestellt hat. (Sie erklären das in der Dokumentation: hook_module_implements_alter ).
Ich weiß, dass dieser Beitrag dem Beitrag von wiifm ziemlich ähnlich ist, fand ihn aber mit einem Beispiel mit hook_form_alter nützlich
quelle