如何从另一个模块重写Drupal路径
我希望我的模块覆盖另一个模块设置的路径 例如: 模块A有一个寄存器路径:如何从另一个模块重写Drupal路径,drupal,drupal-6,drupal-7,drupal-modules,Drupal,Drupal 6,Drupal 7,Drupal Modules,我希望我的模块覆盖另一个模块设置的路径 例如: 模块A有一个寄存器路径: $menu['node/%id/test'] = array( 'title' => 'Test', 'page callback' => 'test_A', 'page arguments' => array(1), 'access callback' => 'test_access', 'access arguments' => array(1),
$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
覆盖其他模块设置的现有路径的最佳方法是什么?要使用alter hook,: 由于您只是修改现有的菜单路由器定义,因此只需声明要更改的部分(例如,页面回调函数名)。注意,
$items
是通过引用传递的,因此您不需要返回任何内容
function mymodule_menu_alter(&$items) {
$items['node/%id/test']['page callback'] = 'test_B';
}