如果我有两个模块,每个模块都实现了preprocess_node挂钩。然后将首先调用哪一个?反正是否强制执行它的调用顺序?
module1_preprocess_node(&$vars){
$vars['submitted'] = "test1";
}
module2_preprocess_node(&$vars){
$vars['submitted'] = "test2";
}
我想知道结果是什么...... test1或test2。 提前致谢
答案 0 :(得分:13)
Drupal中的所有挂钩都以模块权重顺序触发。默认情况下,所有模块的权重均为零,因此如果您想控制它们触发的确切顺序,则需要更改数据库中的某些内容。
How to Update a Module's Weight
如果查看module_list()的API文档,则会按字母顺序中断.module文件的文件名。
答案 1 :(得分:2)
如果模块未在表system
中更改其权重,则结果将为test2
。
调用的第一个模块是重量较轻的模块;当两个模块具有相同的权重时,它们按字母升序排序。 这对每个被调用的钩子都有效。