开发者

drupal menu customizacion via css?

开发者 https://www.devze.com 2023-02-03 12:42 出处:网络
I\'ve been fiddling around with drupal theming quite succesfully (or at least, that\'s what i think), but when I tried to inject css coding to the primary links menu to customize it as i generally do

I've been fiddling around with drupal theming quite succesfully (or at least, that's what i think), but when I tried to inject css coding to the primary links menu to customize it as i generally do via html+css, i hit a wall.

I have been able to apply css styles to divs, links and text, but I would like to customize the primary (and secondary) links menus much more, perhaps with some css sprite menu techniques, but while remaining drupal-compliant and using as much of drupal's own php in the process. or if i 开发者_开发技巧really have to rewrite some code, i don't mind, though i am not quite the programmer yet.

i have been around several sites but i haven't anything particularly useful, so if anyone can point me to the right direction, i will be quite grateful.

thanx in advance.


You can add a id-like class for each menu item - add this function in your 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']);
}

This code can be cleaner, but i've added more lines so you can read it better.


if I understand your question correctly you will like to add a custom class/id to you menu . This can be done by overriding the theme_menu_tree for a given menu. I do this for my main menu by adding the following to my template.php file:

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

hope this helps.

You should also have a look at the themer module, which gives you suggestion for template functions and more.

cheers, Jørgen

0

精彩评论

暂无评论...
验证码 换一张
取 消