Rutas de menú

grone2013's picture

Saludos amigos del Grupo.

Creando un item de menú con el hook_menu, a la hora de establecer la ruta quiero saber la diferencia entre "%node" y "node/%"

Gracias

Comments

juankvillegas's picture

Digamos que usted crea el siguiente item en el hook_menu:

<?php
  $items
['ejemplo/%'] = array(
   
'title' => 'Ejemplo 1',
   
'page callback' => 'ejemplo_contenido',
   
'page arguments' => array(1),
   
'access callback' => TRUE,
   
'type' => MENU_CALLBACK,
  );
?>

Y en otra parte tiene una función como:
<?php
 
function ejemplo_contenido($nid) {
   
$node = node_load($nid);
   
// Esta función recibe el id del nodo tal cual está en la URL.
 
}
?>

Entonces con page callback está diciendo que cuando llamen a la página ejemplo/8 se debe llamar la función ejemplo_conenido con el argumento 8

Ahora, si tiene este otro elemento en el hook_menu:

<?php
  $items
['otro_ejemplo/%node'] = array(
   
'title' => 'Ejemplo 2',
   
'page callback' => 'ejemplo_contenido_2',
   
'page arguments' => array(1),
   
'access callback' => TRUE,
   
'type' => MENU_CALLBACK,
  );
?>

Y en otra parte tiene una función como:
<?php
 
function ejemplo_contenido_2($node) {
   
// Esta función ya recibe el $node, ya el argumento pasó por node_load().
 
}
?>

Entonces cuando llamen a la página otro_ejemplo/8 se debe llamar la función ejemplo_contenido_2 pero el argumento pasa antes por la función node_load() de tal forma que usted ya recibe el objeto nodo completo.

Gracias

grone2013's picture

Saludos Juan.

Gracias por la explicación. Me quedó muy claro.

De nuevo gracias.