gpt4 book ai didi

drupal - 如何从另一个模块覆盖 Drupal 路径

转载 作者:行者123 更新时间:2023-12-01 09:33:56 24 4
gpt4 key购买 nike

我希望我的模块覆盖由另一个模块设置的路径

例子:

模块 A 已经注册了一个路径:

$menu['node/%id/test'] = array(
'title' => 'Test',
'page callback' => 'test_A',
'page arguments' => array(1),
'access callback' => 'test_access',
'access arguments' => array(1),
'type' => MENU_LOCAL_TASK,
)

现在我创建模块 B 并注册相同的路径。

$menu['node/%id/test'] = array(
'title' => 'Test',
'page callback' => 'test_B',
'page arguments' => array(1),
'access callback' => 'test_access',
'access arguments' => array(1),
'type' => MENU_LOCAL_TASK,
)

对该路径的每个请求

www.mysite.com/node/1/test

将路由到模块 B 而不是 A。

覆盖由其他模块设置的现有路径的最佳方法是什么?

最佳答案

你想使用一个改变钩子(Hook),hook_menu_alter() :

function mymodule_menu_alter(&$items) {
$items['node/%id/test']['page callback'] = 'test_B';
}

由于您只是修改现有的菜单路由器定义,因此您只需声明要更改的部分(例如,页面回调函数名称)。还要注意 $items 是通过引用传递的,所以你不需要返回任何东西。

关于drupal - 如何从另一个模块覆盖 Drupal 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11837048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com