Drupal中的hook顺序问题,这是刚学Drupal开始时,经常遇到的一个问题,因为Drupal中的hook很多,有些hook,它的执行顺序,对后面的是有影响的。
比如hook_form_alter,如果一个多个模块,同时使用hook_form_alter修改同一个表单,这个时候,先后顺序不一样,效果可能也就不同。
在drupal7中,为了解决hook的顺序问题,我们可以调整模块的重量,比如我在Field
Validation模块中,就使用了下面的代码:
/**
* Implements hook_install().
*/
function field_validation_install() {
db_query("UPDATE {system} SET weight = 10 WHERE name = 'field_validation'");
}
通过将field_validation'模块的重量设置为10,从而让这个模块的钩子实现,放在靠后的位置执行。