créer des onglets avec hook_menu () pour le module personnalisé

14

depuis deux heures, j'essaie de créer des onglets dans mon backend de modules personnalisés.

J'ai essayé plusieurs suggestions, mais je n'ai réussi à en faire appliquer aucune.

c'est mon hook_menu () actuel:

    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;
}

Je veux simplement deux onglets appelés: «tab1» et «tab2».

Quelqu'un peut-il me donner un exemple de travail? Cela devrait être vraiment simple, mais en ce moment, cela semble impossible

mhmdrupal
la source

Réponses:

44

Vous devez définir un chemin «racine» qui est un élément de menu normal, puis ajouter un autre élément pour chacun des onglets. Le premier héritera des propriétés de l'élément racine et le second définira ses propres rappels.

Combiné avec les constantes MENU_LOCAL_TASKet MENU_DEFAULT_LOCAL_TASKtype, vous devriez obtenir les onglets que vous attendez:

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
la source
2
merci pour la leçon clive! Bonne explication. Vous venez de me sauver quelques heures :)
mhmdrupal