Problèmes avec les onglets créés dans hook_menu

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour à tous,

J'ai créé un module pour un type particulier. Tout va bien pour la création et la modification, les objets sont bien créés avec le type "MonType" et j'ai un joli ensemble d'onglets (à 2 niveaux) qui apparaissent bien.

Tellement bien qu'il apparaissent aussi pour tous les autres types de "node", page et story !

J'ai ajouter dans monType_menu() des items du genre

$items['node/%node/blabla'] = array(
'title'            => 'blabla',
'description'      => 'blabla.',
'page arguments'   => array(1, 'node' ),
'page callback'    => '_monType_blabla',
'access arguments' => array('access content'),
'type'             => MENU_LOCAL_TASK,
'weight' => 1,
);

Je comprends que si cela commence par 'node' alors c'est vrai tout le temps. Mais quand j'écris :

$items['monType/%node/blabla'] = array(
'title'            => 'blabla',
'description'      => 'blabla.',
'page arguments'   => array(1, 'node' ),
'page callback'    => '_monType_blabla',
'access arguments' => array('access content'),
'type'             => MENU_LOCAL_TASK,
'weight' => 1,
);

cela ne marche pas.

Bizarrement je ne trouve pas d'exemple de module d'un nouveau type avec des menus. A chaque fois, les examples montrent un cas ou l'autre mais pas les deux ensembles.

Forum : 
Version de Drupal : 

Là j'ai peu que ce soit sans fond. En tout cas en Drupal 6 moi je n'ai pas trouvé la solution. Je ne pense pas non plus (mais je peux me tromper) que ta deuxième approche soit valable. Il manque à Drupal 6 la capacité de rendre un menu "dynamique", une sorte de "visibility callback". Je crois qu'une telle chose est maintenant possible en D7.

De mémoire, dans la 4 et la 5, il y avait une gestion de cache dans le menu. J'avais fait des menus en fonction des nid:

  • il y avait un test 'if ($may_cache)'
  • Je faisais une requête pour trouver tous les nid qui m'interressaient
  • puis je remplissais le tableau d'items avec chacun des nid

Mais c'est pas beau et lourd surement en mémoire.
Cela n'existe plus dans la version 6?

Question sous-jacente à mon problème, c'est le chemin d'accés à un nouveau type. Node est un type générique et le chemin est node/1 . J'ai mon type monType, comment créer mon propre chemin monType/1, avec ce que cela implique monType/1/edit etc.

Merci d'avance

Afin de "contourner" ton problème tu pourraient créer des éléments pour un menu spécifique créé pour ton module. Ensuite tu peux assigner ce menu dans un block et gérer l'apparition de ces menus via les règles de gestion de ton bloc.

Je ne suis pas sûr d'être très clair ...