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 ?
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

Et sans section ‘access’ ça donne quoi ?
Yoran - arNuméral
Yoran
1017
En supprimant le cache via le menu performance, mon second onglet apparait bien. Il semble que ce n’était qu’un problème de cache.
lucuhb
29