hook_preprocess_node()执行顺序

时间:2010-08-20 15:33:02

标签: drupal drupal-6

如果我有两个模块,每个模块都实现了preprocess_node挂钩。然后将首先调用哪一个?反正是否强制执行它的调用顺序?

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

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

我想知道结果是什么...... test1或test2。 提前致谢

2 个答案:

答案 0 :(得分:13)

Drupal中的所有挂钩都以模块权重顺序触发。默认情况下,所有模块的权重均为零,因此如果您想控制它们触发的确切顺序,则需要更改数据库中的某些内容。

How to Update a Module's Weight

如果查看module_list()的API文档,则会按字母顺序中断.module文件的文件名。

答案 1 :(得分:2)

如果模块未在表system中更改其权重,则结果将为test2

调用的第一个模块是重量较轻的模块;当两个模块具有相同的权重时,它们按字母升序排序。 这对每个被调用的钩子都有效。