He creado un menú personalizado (llamémoslo "mynav") y en mi tema he creado una plantilla específicamente para él ( block--menu--menu-mynav.tpl.php
) que contiene:
<div id="mynav" class="<?php print $classes; ?>"<?php print $attributes; ?>>
<?php print $content ?>
</div>
Esto funciona bien
Sin embargo, preferiría aplicar la identificación a la lista desordenada que se genera y contiene $content
. Supongo que necesito crear una función MYTHEME_links__system_mynav_menu
como esta:
function MYTHEME_links__system_mynav_menu($variables) {
return "TEST"; // Generate HTML here (<ul id="mynav">...)
}
pero no parece tener un efecto.
¿Qué estoy haciendo mal?
Respuestas:
Para asignar un tema a la lista desordenada, debe llamar a theme_menu_tree (). Puede editar su template.php para llamar a esto.
Luego, si desea crear un tema para sus enlaces, llame a theme_menu_link ().
Ahora, el problema con Drupal 7 es que hay un error importante cuando se trata de mostrar el rastro activo de menús personalizados.
Consulte el problema
Problema n.o 520106: no hay forma de establecer dinámicamente la ruta activa
Problema n.o 942782: los menús personalizados nunca reciben una ruta activa
Básicamente no tienes suerte si quieres algunos menús personalizados verdaderos. Estos problemas son muy antiguos en la comunidad de drupal, por lo que no estoy seguro de si se solucionarán pronto. No sé si hay algún PHP que pueda ayudarlo. Puede recurrir a algunos módulos alternativos para facilitar la funcionalidad, como los atributos del menú y el bloqueo del menú . Ambos pueden ayudar a sortear el sistema de menú cruddy en Drupal 7.
fuente
Dentro de template.php de tu tema, esta era la forma de hacer cosas en Drupal 6
En Drupal 7 necesitas llamar
fuente
MYTHEME_menu_link
parece que solo maneja los enlaces individuales. No puedo alcanzar elul
.