Erstellen Sie Tabs mit hook_menu () für ein benutzerdefiniertes Modul

14

Seit zwei Stunden versuche ich, Tabs in meinem Backend für benutzerdefinierte Module zu erstellen.

Ich habe mehrere Vorschläge ausprobiert, konnte aber keine zum Laufen bringen.

das ist mein aktuelles 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;
}

Ich möchte einfach zwei Tabs: 'tab1' und 'tab2'.

Kann mir jemand ein funktionierendes Beispiel geben? Das sollte eigentlich einfach sein, aber momentan scheint es unmöglich

mhmdrupal
quelle

Antworten:

44

Sie müssen einen Stammpfad definieren, der ein normaler Menüeintrag ist, und dann für jede Registerkarte einen weiteren Eintrag hinzufügen. Der erste erbt die Eigenschaften des Stammelements und der zweite definiert seine eigenen Rückrufe.

In Kombination mit den MENU_LOCAL_TASKund MENU_DEFAULT_LOCAL_TASKTypkonstanten, sollten Sie die Tabs erhalten Sie erwarten:

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;
}
Clive
quelle
2
danke für die lektion clive! Gute Erklärung. Du hast mir gerade ein paar Stunden gespart :)
mhmdrupal