fka*_*usi 3 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),
'type' => MENU_LOCAL_TASK,
)
Run Code Online (Sandbox Code Playgroud)
现在我创建模块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,
)
Run Code Online (Sandbox Code Playgroud)
对此路径的每个请求
www.mysite.com/node/1/test
将路由到模块B而不是A.
覆盖现有路径的最佳方法是由其他模块设置的?
小智 8
你想使用ALTER挂钩,hook_menu_alter():
function mymodule_menu_alter(&$items) {
$items['node/%id/test']['page callback'] = 'test_B';
}
Run Code Online (Sandbox Code Playgroud)
由于您只是修改现有的菜单路由器定义,因此您只需要声明要更改的部分(例如,页面回调函数名称).注意也$items通过引用传递,因此您不需要返回任何内容.
| 归档时间: |
|
| 查看次数: |
2267 次 |
| 最近记录: |