создавать вкладки с 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».

Может кто-нибудь дать мне рабочий пример? Это должно быть действительно просто, но сейчас это кажется невозможным

mhmdrupal
источник

Ответы:

44

Вам нужно определить корневой путь, который является обычным пунктом меню, а затем добавить еще один элемент для каждой вкладки. Первый из них будет наследовать свойства корневого элемента, а второй будет определять свои собственные обратные вызовы.

В сочетании с константами типа MENU_LOCAL_TASKи MENU_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