Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Drupal 7:以编程方式将项添加到管理工具栏/菜单_Drupal_Drupal 7_Drupal Modules_Hook Menu - Fatal编程技术网

Drupal 7:以编程方式将项添加到管理工具栏/菜单

Drupal 7:以编程方式将项添加到管理工具栏/菜单,drupal,drupal-7,drupal-modules,hook-menu,Drupal,Drupal 7,Drupal Modules,Hook Menu,我正在为我的公司构建一个相当复杂的模块,包含许多不同的配置页面。我想有一个菜单项在管理栏的顶部,有所有的子菜单项以及。我知道如何通过UI向菜单中添加单个项目,但是会有足够多的页面,我只希望通过模块本身来完成。那么,我如何在模块文件的“管理”菜单中添加一个带有子菜单的项,使其与“仪表板”、“内容”、“结构”等并排。我假设它必须在hook\u menu()中,但我无法找到它。这可以通过向hook\u menu实现中添加系统管理菜单块的页面回调来实现: 因此,假设您想要创建一个如下所示的结构: 自定

我正在为我的公司构建一个相当复杂的模块,包含许多不同的配置页面。我想有一个菜单项在管理栏的顶部,有所有的子菜单项以及。我知道如何通过UI向菜单中添加单个项目,但是会有足够多的页面,我只希望通过模块本身来完成。那么,我如何在模块文件的“管理”菜单中添加一个带有子菜单的项,使其与“仪表板”、“内容”、“结构”等并排。我假设它必须在hook\u menu()中,但我无法找到它。

这可以通过向
hook\u menu
实现中添加
系统管理菜单块的
页面回调来实现:
因此,假设您想要创建一个如下所示的结构:

  • 自定义主菜单(除结构、模块等其他项目外,还会出现在工具栏上)
    • 子菜单项1
    • 子菜单项2
钩子实现类似于:

function MODULE_menu() {
  $items['admin/main'] = array(
    'title' => 'Custom main menu',
    'description' => 'Main menu item which should appear on the toolbar',
    'position' => 'left',
    'weight' => -100, // Less weight so that it will appear to the extreme left, before dashboard.
    'page callback' => 'system_admin_menu_block_page',
    'access arguments' => array('administer site configuration'),
    'file' => 'system.admin.inc',
    'file path' => drupal_get_path('module', 'system'),
  );

  $items['admin/main/sub-menu-1'] = array(
    'title' => 'Sub menu item 1',
    'description' => 'Child of the menu appearing in toolbar.',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('custom_form'),
    'access arguments' => array('custom permission'),
    'type' => MENU_NORMAL_ITEM,
  );

  $items['admin/main/sub-menu-2'] = array(
    'title' => 'Sub menu item 2',
    'description' => 'Child of the menu appearing in toolbar.',
    'page callback' => 'custom_page_callback',
    'access arguments' => array('custom permission'),
    'type' => MENU_NORMAL_ITEM,
  );
}

另外,在启用模块或将此代码添加到hook_菜单实现后,您必须刷新缓存,以便Drupal选择新的菜单结构。

这很有效。请注意,我不需要
system\u admin\u菜单\u block\u页面
。我可以将
“页面回调”
设置为任何内容。我认为是
位置
重量
文件
,和
文件路径
参数起作用。