欢迎光临
我们一直在努力

Drupal 7 - Hook执行顺序

没有什么文档来说明这个事情,在阅读 "module_implements" 代码的过程中,我获得了变更 Hook 执行顺序的灵感。

下面是 module_implements 中的代码片段

// Allow modules to change the weight of specific implementations but avoid
// an infinite loop.
if ($hook != 'module_implements_alter') {
drupal_alter('module_implements', $implementations[$hook], $hook);
}

所以只要简单的实现一下 "module_implements_alter" ,在代码中对 Module 列表进行重新排序,也就改变了 Hook 的执行顺序。

下面是示例代码:

function mymodule_module_implements_alter(&$module_list, $context){
    if($context === "node_insert"){
    $temp = $module_list['mymodule'];
    // Removing the mymodule key/value
    unset($module_list['mymodule']);
    // Adding the mymodule key value as the last member in the list
    $module_list['mymodule'] = $temp;
    }
}

这里需要注意 module_list 参数是引用传递。

文章来源于互联网:Drupal 7 – Hook执行顺序

赞(0)
未经允许不得转载:莱卡云 » Drupal 7 - Hook执行顺序