Structure
时,您会看到一个包含Blocks
,Content types
,Menus
等的菜单。
有没有办法可以基于路径以编程方式构建其中一个菜单?例如,如果我的模块名为test
且模块的所有子操作都位于www.drupalsite.com/admin/test/action_name
,那么我可以使用当前模块中存在的所有/test/action_name
来构建菜单吗?
我知道可以选择对菜单进行硬编码,但如果可能的话我想避免使用它。
答案 0 :(得分:1)
如果没有更多信息,很难成为描述性的,但你只需要实现hook_menu()
并循环操作列表,为每个操作创建一个菜单项。每次重建菜单时,都会调用菜单挂钩,并将当前的操作列表构建为菜单链接。像这样:
function mymodule_menu() {
$actions = mymodule_get_actions_list();
foreach ($actions as $action) {
$items['admin/test/' . $action->name] = array(
'title' => $action->name,
'access arguments' => array('some permission'),
'page callback' => 'mymodule_callback',
'page_arguments' => array($action->name)
);
}
return $items;
}
function mymodule_callback($action_name) {
// Load the action and display the page
}
在您调用自定义代码创建其中一个操作后,请务必调用menu_rebuild()
以便挂钩运行并将新操作添加到菜单中。