Есть ли способ изменить порядок выполнения hook_form_alter в Drupal 7 без изменения веса модуля или взлома Drupal Core?
Я пытаюсь изменить элемент, добавленный в translation_form_node_form_alter из модуля перевода. При отладке формы я не могу найти элемент, поэтому я предполагаю, что мой хук выполняется раньше, чем тот, что в модуле перевода.
hook_form_FORM_ID_alter()
то, насколько я понимаю, вам вообще не нужно изменять вес (потому что всеhook_form_FORM_ID_alter()
звонки сделаны в конце концовhook_form_BASE_FORM_ID_alter()
).drupal_prepare_form()
иdrupal_alter()
. Я уже заметил, что документы казались отключенными, поэтому я создал проблему . Не знаю, почему это не работает для вас без изменения веса системы!Также стоит упомянуть, что есть новый API drupal 7 под названием hook_module_implements_alter (), который позволяет изменять порядок выполнения для данного хука БЕЗ изменения таблицы весов модуля.
Пример кода из документации API, показывающий, как легко это сделать:
источник
Вот как убедиться, что ваш hook_form_alter вызывается после других модулей hook_form_alter:
Это также работает, когда другой модуль предоставил хук form_alter в варианте: hook_form_FORM_ID_alter. (они объясняют это в документации: hook_module_implements_alter ).
Я знаю, что этот пост очень похож на пост wiifm, но счел его полезным на примере с hook_form_alter
источник