创建drupal(子)菜单

时间:2011-10-06 14:47:01

标签: drupal menu drupal-7

好的,所以我有一件奇怪的事情要做,我很感激任何帮助。当您转到Drupal管理员面板并单击Structure时,您会看到一个包含BlocksContent typesMenus等的菜单。

有没有办法可以基于路径以编程方式构建其中一个菜单?例如,如果我的模块名为test且模块的所有子操作都位于www.drupalsite.com/admin/test/action_name,那么我可以使用当前模块中存在的所有/test/action_name来构建菜单吗?

我知道可以选择对菜单进行硬编码,但如果可能的话我想避免使用它。

1 个答案:

答案 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()以便挂钩运行并将新操作添加到菜单中。