[résolu]pb hook_menu : ajouter deux onglets sur un noeud

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,
J'ai créé un module permettant d'ajouter un nouvel onglet lors de l'affichage d'un nœud, jusque là pas de problème.
Voilà ce que j'ai dans mon module (nommé node_to_odt) pour cela :

function node_to_odt_menu() {
...
  $items['node/%node/node_to_odt'] = array(
   'access callback' => 'node_to_odt_access',
    'access arguments' => array(1),
    'page callback' => 'node_to_odt_node_to_odt',
    'page arguments' => array(1),
    'title' => 'Odt version',
    'weight' => 5,
    'type' => MENU_LOCAL_TASK,
  );
...
}
function node_to_odt_access ($node) {
  global $user;
  // Check basic permissions first.
 
  $access = (user_access('export node to odt') );
  // Make sure the user can view the original node content.
  $access = $access && node_access('view', $node);
  // Check additional conditions
  $access = $access && (node_to_odt_is_permitted($node->type) && filter_access($node->format) );
  // Let other modules alter this - for exmple to only allow some users
  // to export specific nodes or types.
 

  drupal_alter("node_to_odt_access", $access, $node);
  return $access;
}

Je souhaite maintenant ajouter un autre onglet sur ce noeud s'il s'agit d'un parent de book.

J'ai donc rajouté, au niveau de mon hook_menu, un nouvel item :

function node_to_odt_menu() {
...
  $items['node/%node/book_node_to_odt'] = array(
   'access callback' => '_book_node_to_odt_access',
    'access arguments' => array(1),
    'page callback' => 'book_node_to_odt',
    'page arguments' => array(1),
    'title' => 'Book Odt version',
    'weight' => 5,
    'type' => MENU_LOCAL_TASK,
  );
...
}
function _book_node_to_odt_access ($node) {
...
même chose que node_to_odt_access pour le moment
...
}

Le problème est que ce nouvel onglet n'apparait pas.
J'ai essayé en n'ayant qu'une seule fonction node_to_odt_access, avec deux arguments, en mettant :

function node_to_odt_menu() {
$items['node/%node/node_to_odt'] = array(
   'access callback' => 'node_to_odt_access',
    'access arguments' => array('node',1),
    'page callback' => 'node_to_odt_node_to_odt',
    'page arguments' => array(1),
    'title' => 'Odt version',
    'weight' => 5,
    'type' => MENU_LOCAL_TASK,
  );
$items['node/%node/node_to_odt'] = array(
   'access callback' => 'node_to_odt_access',
    'access arguments' => array('book',1),
    'page callback' => 'book_node_to_odt',
    'page arguments' => array(1),
    'title' => 'Odt version',
    'weight' => 5,
    'type' => MENU_LOCAL_TASK,
  );
}
function node_to_odt_access ($type,$node) {
...
}

et là j'obtiens le message d'erreur "Missing argument 2 for node_to_odt_access".
Je ne vois pas comment faire pour ajouter ce nouvel onglet.
Quelqu'un aurait-il une idée?

Forum : 
Version de Drupal :