3 votes

comment remplacer le chemin d'accès de Drupal par un autre module ?

Je veux que mon module remplace le chemin défini par un autre module.

Exemple :

Le module A a enregistré un chemin :

$menu['node/%id/test'] = array(
    'title' => 'Test',
    'page callback' => 'test_A',
    'page arguments' => array(1),
    'access callback' => 'test_access',
    'access arguments' => array(1),
    'type' => MENU_LOCAL_TASK,
)

Maintenant je crée le module B et enregistre le même chemin.

$menu['node/%id/test'] = array(
    'title' => 'Test',
    'page callback' => 'test_B',
    'page arguments' => array(1),
    'access callback' => 'test_access',
    'access arguments' => array(1),
    'type' => MENU_LOCAL_TASK,
)

Chaque requête vers ce chemin

www.mysite.com/node/1/test

sera dirigé vers le module B et non A.

Quel est le meilleur moyen de remplacer un chemin existant défini par un autre module ?

8voto

Vous voulez utiliser un crochet de rechange, hook_menu_alter() :

function mymodule_menu_alter(&$items) {
  $items['node/%id/test']['page callback'] = 'test_B';
}

Étant donné que vous ne faites que modifier une définition de routeur de menu existante, il vous suffit de déclarer la partie que vous souhaitez modifier (par exemple, le nom de la fonction de rappel de page). Notez également $items est passé par référence, donc vous n'avez pas besoin de retourner quoi que ce soit.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X