Modificar la salida HTML del módulo "Menu"

Hola a todos :)

Estoy intentando modificar la salida html del módulo menús, para dejarla lo mejor posible para tratarla con css.

En el archivo menu.inc están las funciones que me permiten modificar esa salida, necesito añadir por ejemplo un "id" a una de las funciones, pongo el ejemplo en concreto así me explico mejor:

En la función:

(original)
function theme_menu_item($mid, $children = '', $leaf = TRUE) {
  return '<li class="'. ($leaf ? 'leaf' : ($children ? 'expanded' : 'collapsed')) .'">'. menu_item_link($mid) . $children ."</li>\n";
}

La quiero modificar y que en vez de un class leaf o collapsed me ponga, por ejemplo el nombre del item, así me sirve para tratarlo en CSS con coherencia
(modificada)
function theme_menu_item($mid, $children = '', $leaf = TRUE) {
return '<li id="nombreItem">'. menu_item_link($mid) . $children ."</li>\n";
}

He probado con $mid y me añadie el ide del item, pero eso puede restultar inestable al cambiar otros menús y no es muy claro a la hora de construir la hoja de estilos CSS

 

Un saludo       


SafariNode – Mar, 05/02/2008 – 11:19

Función estilizable

SafariNode:

Desde el momento en que la función de despliegue del menú se llama theme_menu_item te está indicando que se trata de una función estilizable (themable). Esto significa que puedes hacer una sustitución (override), para lo cual necesitas modificar el archivo template.php en tu tema gráfico.

Para algo de información sobre este punto:

Using Theme Override Functions
Override the title of a Menu Item
Menu and breadcrumb customising

¡Éxito en tus experimentos!


hsalazar – Mar, 05/02/2008 – 13:54

Hola Hsalazar,

Hola Hsalazar,

Es lo que estoy haciendo, es decir, meto esas funciones en el phptemplate de mi theme y las renombre myTema_menu_item.

Ya he logrado añadir información que me resulte útil a la hora de escribir las CSS. Aquí pongo lo que he hecho.

function myTheme_menu_item($mid, $children = '', $leaf = TRUE) {
$item = menu_get_item($mid);
return '<li id="'.$item['description'].'">'. menu_item_link($mid) . $children ."</li>\n";
}

Ahora tengo en el ID del objeto < li > la descripción del item, así puedo usarlo en el CSS. No es algo muy limpio. Lo siguiente que me gustaría hacer sería añadir un campo más al módulo de menús, algo como CSSID o algo así y cojer ese valor para usarlo como ID, no como ahora que estoy usando la descripción o el título.

Saludos.

 


SafariNode – Mar, 05/02/2008 – 14:11