使用hook_menu()为定制模块创建标签


14

因为两个小时以来,我试图在我的自定义模块后端中创建标签。

我已经尝试了一些建议,但其中任何一条都无法奏效。

这是我当前的hook_menu():

    function social_links_menu() {
  $items['admin/config/system/social_links'] = array(
    'title' => 'social_links',
    'description' => 'Configure to fit clients needs',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('social_links_settings'),
    'access arguments' => array('administer site configuration'),
    'file' => 'social_links.admin.inc',
  );

  return $items;
}

我只需要两个标签:'tab1'和'tab2'。

有人可以给我一个有效的例子吗?这应该很简单,但是现在看来似乎不可能

Answers:


44

您需要定义一个“根”路径,这是一个普通的菜单项,然后为每个选项卡添加另一个项。其中第一个将继承根项目的属性,第二个将定义自己的回调。

MENU_LOCAL_TASKMENU_DEFAULT_LOCAL_TASK类型常量结合使用,您应该获得所需的标签:

function social_links_menu() {
  $items['admin/config/system/social_links'] = array(
    'title' => 'social_links',
    'description' => 'Configure to fit clients needs',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('social_links_settings'),
    'access arguments' => array('administer site configuration'),
    'file' => 'social_links.admin.inc',
  );

  $items['admin/config/system/social_links/tab1'] = array(
    'title' => 'Tab 1',
    'type' => MENU_DEFAULT_LOCAL_TASK,
    'weight' => -10
  );

  $items['admin/config/system/social_links/tab2'] = array(
    'title' => 'Tab 2',
    'type' => MENU_LOCAL_TASK,
    'page callback' => 'some_callback',
    'access arguments' => array('some permission')
  );

  return $items;
}

2
谢谢你的教训。很好的解释。您刚刚救了我几个小时:)
mhmdrupal 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.