May 232011
 

Post to Twitter Post to Facebook


Este es el primero de una serie de artículos donde aprenderemos a trabajar con la API de Drupal 7 en lo referente a los menus, the menu system.

El menu system tiene responsabilidades básicas :

  • Callback mapping.
  • Control de acceso.
  • Personalización de menu.

El código esencial del menu system se encuentran en includes/menu.inc ,mientras que el código opcional sobre algunas características se encuentra en modules/menu, por ejemplo la personalización de menus.

Asignando URLs a funciones :

Antes de desarrollar cualquier ejemplo , en primer lugar debemos entender cómo drupal procesa las URLs y cómo maneja las peticiones (request) y emitir una respuesta.

El enfoque general es el siguiente: Drupal pregunta a los módulos habilitados para conseguir un array de menu items.Cada menu item consiste en un array clave-valor donde a cada path (clave) le corresponde una serie de información asociada (valor) a dicha path.Uno de los datos asociados a una path que debemos definir es la page callback asociada a la path, la cual simplemente consiste en una función PHP que se ejecutará cuando el navegador solicite cierta path.Este proceso lo podemos describir en los siguientes pasos:

  1. Drupal establece la path.Por ejemplo si nuestra url es http://example.com/?q=node/6 o http://example.com/node/6 ,si trabajamos con urls amigables,la path que drupal establecería sería node/6.
  2. Se realiza un seguimiento del mapa de direcciones (paths map) con sus correspondientes callbacks consultando la tabla menu_router de la base de datos.Del mismo modo hace un seguimiento de los elementos de menu (menu items) consultando la tabla menu_links.
  3. Averigua qué entrada de la tabla menu_router corresponde con la path y se construye un elemento de enrutamiento (router item) describiendo la callback que va a ser llamada.
  4. Se cargan cualquier objeto necesario para la funcion callback.
  5. Se comprueban los permisos de usuario para acceder a la callback, si no se tienen permisos suficientes se retorna un mensaje de “Acces denied”.
  6. Se localizan el título y la descripción del menu item para el lenguaje actual.
  7. Se cargan los ficheros adicionales necesarios.
  8. Finalmente se llama a la función callback y devuelve un resultado, conforme a este resultado index.php lo pasa a través de la theme_page() mostrándose finalmente la pagina deseada.

  2 Responses to “How works the menu system in Drupal 7”

  1. No estaría de más que citaras la fuente (“Pro Development Module…”) de donde estás sacando esta información, ¿no te parece?

 Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>