web-dev-qa-db-fra.com

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

depuis deux heures je tente 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

14
mhmdrupal

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 le MENU_LOCAL_TASK et MENU_DEFAULT_LOCAL_TASK constantes de type, 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;
}
44
Clive