He navegado por la web y no es del todo obvio cómo crear menús personalizados. He buscado durante horas y no he encontrado una sola publicación que ilustre el proceso, de principio a fin, de crear un menú y personalizar su salida. Parece que este es un proceso de varias etapas:
- Cree el menú a través de la interfaz de Drupal.
- Cree una función de tema en su
template.php
archivo para crear un tema de salida - Exponga este menú a un archivo de plantilla (de alguna manera) agregándolo como una variable.
- Llame a la
theme
función en el menú en el archivo de plantilla.
1 es bastante fácil de hacer, los problemas que encuentro son con 2, 3 y 4. Al mirar la plantilla de página predeterminada, veo que expone el menú principal en la variable $main_menu
. Más adelante, en la página, puede ver la función theme('links__system_main_menu', array('links' => $main_menu...
, lo que significa que está buscando una función de tema con un nombre apropiado en alguna parte y la está utilizando para generar el resultado.
Sé que si coloco function theme_links__system_main_menu(&$variables) {...}
en mi archivo template.php Drupal utilizará esa función en lugar de function theme_menu_links(&$variables) {...}
.
Lo que no sé es cómo Drupal vincula el menú personalizado que creé con esa función. Digamos, por ejemplo, que creé un menú llamado My Menu
. ¿Podría crear la siguiente función en mi template.php
archivo y tema la salida para ese menú?function theme_links__system_my_menu(&$variables) {...}
Además, ¿cómo se hace que ese menú personalizado esté disponible para un archivo de plantilla? ¿Cómo expone Drupal la $main_menu
variable a page.tpl.php?
Creo que la clave que me falta aquí es cómo incrustar la variable que representa mi menú personalizado en una página de plantilla. En su mayor parte, aunque estoy completamente perdido con qué hacer después de haber creado el menú.
Gracias por la ayuda.
EDITAR: Probablemente debería publicar lo que estoy haciendo. Según mi comentario a BetaRide a continuación, necesito inyectar HTML personalizado en los <li>
elementos de los elementos del menú. Específicamente, estoy agregando íconos de Twitter Bootstrap.