hook_preprocess_node () порядок выполнения

Если у меня есть два модуля, каждый реализовал свой хук preprocess_node. Тогда какой из них будет вызываться первым? Есть ли способ обеспечить порядок, в котором он будет вызываться?

module1_preprocess_node(&$vars){
  $vars['submitted'] = "test1";
}

module2_preprocess_node(&$vars){
  $vars['submitted'] = "test2";
}

Интересно, какой будет результат ... test1 или test2. Заранее спасибо

8
задан kiamlaluno 20 August 2010 в 23:20
поделиться

2 ответа

Все хуки в Drupal запускаются в порядке веса модуля. По умолчанию все модули имеют нулевой вес, поэтому, если вы хотите контролировать точный порядок, в котором они запускаются, вам нужно что-то изменить в базе данных.

Как обновить вес модуля

Если вы посмотрите документацию API для module_list () , связи прерываются в алфавитном порядке имени файла .module.

13
ответ дан 5 December 2019 в 11:21
поделиться

Если модули не изменили свой вес в таблице system, то результатом будет test2.

Первый вызванный модуль имеет меньший вес; когда два модуля имеют одинаковый вес, они сортируются по алфавиту по возрастанию. Это допустимо для каждого вызванного хука.

2
ответ дан 5 December 2019 в 11:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: