hook_preprocess_node () порядок выполнения - PullRequest
8 голосов
/ 20 августа 2010

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

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

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

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

Ответы [ 2 ]

13 голосов
/ 20 августа 2010

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

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

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

2 голосов
/ 21 августа 2010

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

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

...