Pregunta

He sido perder el tiempo con Drupal tematización bastante éxito (o al menos, eso es lo que creo), pero cuando he intentado inyectar css codificación para el menú de enlaces primaria para personalizarlo como por lo general no a través de HTML + CSS, me golpeó una pared.

he podido aplicar estilos CSS para divs, enlaces y texto, pero me gustaría personalizar la primaria (y secundaria) vincula menús mucho más, tal vez con algunas técnicas de menú CSS sprites, pero mientras Drupal compatible restante y utilizando tanto de la propia php de Drupal en el proceso. o si realmente tengo que volver a escribir algo de código, no me importa, aunque todavía no estoy muy al programador.

He estado alrededor de varios sitios pero no tiene nada particularmente útil, así que si alguien me puede apuntar en la dirección correcta, pero seré muy agradecido.

Gracias de antemano.

¿Fue útil?

Solución

Se puede añadir un ID-como clase para cada elemento de menú - añadir esta función en su template.php

function mythemename_menu_item_link($link) {
  if (empty($link['localized_options'])) {
    $link['localized_options'] = array();
  }

  // LOOK HERE
  // add a key for main menu items, so we can theme each item in a different way
  // add this class only for a specific menu
  if ($link['menu_name'] == 'menu-menu-mymenu') {
    if ($link['localized_options']['attributes']['class']) {
      $link['localized_options']['attributes']['class'] .= ' menu-'. $link['mlid'];
    }
    else {
      $link['localized_options']['attributes']['class'] = 'menu-'. $link['mlid'];
    }
  }

  return l($link['title'], $link['href'], $link['localized_options']);
}

Este código puede ser más limpio, pero he añadido más líneas para que pueda leer mejor.

Otros consejos

si entiendo bien su pregunta se le gustaría añadir una clase personalizada / id para que el menú. Esto puede hacerse reemplazando el theme_menu_tree para un menú determinado. Lo hago por mi menú principal agregando la siguiente a mi archivo template.php:

function THEMENAME_menu_tree__main_menu($variables){
return '<ul class="menu main-menu">' . $variables['tree'] . '</ul>';
}

Espero que esto ayude.

También debe echar un vistazo a la themer módulo, que le da la sugerencia de funciones de plantilla y más .

alegrías, Jørgen

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top