Diferencia hook_menu entre Drupal 5 y Drupal 6

En este post no pienso dar detalles de todas las diferencias que pueda tener el hook_menu entre las versiones de drupal 5 y drupal 6. Desarrollando un módulo (plus1 es su nombre) que obtuve del libro Pro Drupal Development (que está pensado para drupal 5) me di cuenta que al tratar de implementarlo en drupal 6 tenía un serie de errores referente al hook_menu que había definido en el módulo. A continuación muestro los dos códigos y comento un poco las diferencias:

Drupal 5

/** * Implementation of hook_menu(). */
 
function plus1_menu($may_cache) {
  $items = array(); 
  if ($may_cache) { 
    $items[] = array( 
      'path' => 'plus1/vote', 
      'callback' => 'plus1_vote', 
      'type' => MENU_CALLBACK, 
      'access' => user_access('rate content'), 
    ); 
  } 
  return $items; 
}

Drupal 6

/**
 * Implementation of hook_menu().
 */
function plus1_menu() {
  $items['plus1/vote'] = array(
    'page callback' => 'plus1/vote',
    'page arguments' => array(arg(0)),
    'type' => MENU_CALLBACK,
    'access arguments' =< array('rate content'),
  );
 
  return $items;
}

Si ven existen una diferencias bien claras con referencia a las dos funciones:

  • Primero que todo no se utiliza más el parámetro $may_cache
  • En drupal 6 no utilizamos la llave path debido a que el path lo colocamos como índice del propio elementro $items que vamos a retornar
  • La llave del arreglo que retornamos callback ahora la llamamos page callback
  • En drupal 6 los argumentos que vamos a utilizar en el callback debemos pasarlos por un array de la llave page arguments
  • En drupal 6 utilizamos la llave access arguments en vez de access (utilizada en drupal 5). Además no hace falta utilizar la función user_access. En vez de eso mandamos un arreglo con los permisos correspondientes.

Si quieres buscar más información sobre la función hook_menu te recomiendo vayas a la documentación de la API de Drupal:

 

Saludos ...

Su voto: Nada Promedio: 3 (4 votos)

Enviar un comentario nuevo

El contenido de este campo se mantiene privado y no se mostrará públicamente.
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Etiquetas HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Saltos automáticos de líneas y de párrafos.

Más información sobre opciones de formato

CAPTCHA
Esta pregunta es para probar si tu eres un humano y para prevenir spam en el sitio.
3 + 13 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.