Una de las opciones básicas en una web, son los menús. Pueden ser horizontales, verticales o de mil formas, pero su existencia es imprescindible en una web.
En drupal es muy sencillo crear un menú, pero nosotros lo haremos por código.
Empezamos a ver como lo hacemos.
Para realizar nuestro menú, aremos uso del hook_menu. (http://api.drupal.org/api/function/hook_menu/6)
Este hook nos ayuda a crear nuestro propio menú, con los ítems que creamos.
Parámetros de cada ítem:
-title: El titulo que mostrara el ítem del menú.
-description: Una pequeña descripción del ítem (no obligatoria, pero si que la uso para aveiguar rapidamente que hace el ítem)
-page callback: La pagina, formulario, etc que se nos mostrara al hacer clic.
-page arguments: Array de argumentos que se pasan a la pagina de callback.
-access arguments: Array con los permisos que podrán visualizar la pagina.
-file: Si tenemos el fichero que contiene el callback en un lugar distinto del menú, aquí especificamos donde se encuentra.(La ruta no será siempre a partir del directorio actual).
-weight: El peso que tiene el ítem. Drupal muestra de mas pequeño a mas grande.
-type: El tipo de menú. Por defecto estará en MENU_NORMAL_ITEM, pero podemos tener mas casos. Ejemplo:
-MENU_CALLBACK: No se mostrara el ítem del menú ya que solo se usara como llamada para recoger su contenido.
Como creo un menú.
Primero de todo, debemos crear nuestra función usando el hook_menu.
-
ejemplo_menu() {
-
// productos es la ruta que tiene el ítem, osea www.sitio.com/productos
-
'title' = 'Listado de productos',
-
'description' = 'Listado de todos los productos de la empresa',
-
// ejemplo_listado_productos es la función que nos mostrara el contenido.
-
'‘page callback' = 'ejemplo_listado_productos',
-
// Id de la empresa que necesita la funcion ejemplo_listado_productos para mostrar el resultado
-
// Trabajadores es el único rol que podrá ver este ítem de menú.
-
// Ruta donde esta la función ejemplo_listado_productos.
-
'file' = '/includes/ ejemplo_listado.inc',
-
);
-
// Si quisiéramos mas menús:
-
// Insertar los campos.
-
);
-
// Retornamos los ítems de menú creados.
-
Return $items.
-
}
Y si queremos hacer un menú con submenús?
Es muy sencillo. Tendremos que hacer uso de el tipo MENU_LOCAL_TASK de los menú.
Ejemplo:
-
'title' = 'Listado de productos',
-
'description' = 'Listado de todos los productos de la empresa',
-
'page callback' = 'ejemplo_listado_productos',
-
'type' = MENU_LOCAL_TASK,
-
'file' = '/includes/ ejemplo_listado.inc',
-
);
-
'title' = 'Listado de productos artesanales',
-
'description' = 'Listado de todos los productos de la empresa',
-
'page callback' = 'ejemplo_listado_productos',
-
'type' = MENU_LOCAL_TASK,
-
'file' = '/includes/ ejemplo_listado.inc',
-
);
-
'title' = 'Listado de productos manufacturados',
-
'description' = 'Listado de todos los productos de la empresa',
-
'page callback' = 'ejemplo_listado_productos',
-
'type' = MENU_LOCAL_TASK,
-
'file' = '/includes/ ejemplo_listado.inc',
-
);
-
'title' = 'Listado de productos en stock',
-
'description' = 'Listado de todos los productos de la empresa',
-
'page callback' = 'ejemplo_listado_productos',
-
'type' = MENU_LOCAL_TASK,
-
'file' = '/includes/ ejemplo_listado.inc',
-
);
Nos quedaría una cosa similar a esto:
Puedes probar de crear tu menú y hacer pruebas con los callback, los tipos, los permisos, etc.
Para mas dudas, en los comentarios





Drupal developer








¿Porque hablas de drupal y tienes el blog en un wordpress? No ves que asi tienes poca credibilidad….
Por qué comer cerdo o ternera cuando existe el pollo, no? En la variedad esta el gusto amigo.
Saludos
genial amigo……..de mucha ayuda tu informacion.saludos
Gracias Luis. Un saludo!
Hola y si quisiera mostrar mi modulito con la palntilla por defaault, se que se define en el menu que se crea ,pero no lo he logrado hacer