Вобщем есть меню вида
Пункт 1
Пункт 2
Пункт 3
Пункт 3.1
Пункт 3.2
Пункт 4
Как можно определить разные стили вывода для родительских пунктов (1-3) и для дочерних (3.1-3.2)? Хочу у дочерних сделать меньше шрифт и отступы другие, но в моем случае правка css допускает манипуляции только с раскрывающимися пунктами.
Комментарии
Ну либо это очень сложно, либо чересчур просто.
актуально )
не знаю, сработает или нет, но попробуйте добавить в template.php что-то типа такого:
<?php
$num_links = count($links);
$output .= ' class="';
$output .= '"';
$output .= ">". l($link['title'], $link['href'], $link['attributes'], $link['query'], $link['fragment']) ."</li>\n";
function phptemplate_menu_links($links, $attributes = array()) {
if (!
count($links)) {return '';
}
$level_tmp = explode('-', key($links));
$level = $level_tmp[0];
$output = "<ul class=\"links-$level ".$attributes['class']. "\" id=\"".$attributes['id']."\">\n";
$i = 1;
foreach (
$links as $index => $link) {$output .= '<li';
if (stristr($index, 'active')) {
$output .= 'active';
}// frontpage AND current-link in menu is <front>
elseif((drupal_is_front_page()) && ($link['href']=='<front>')){
$link['attributes']['class'] = 'active';//add class active to <li
$output .= 'active';//add class active to <a
}
if ($i == 1) {
$output .= ' first'; }//задаст 1-му эдементу класс "first"
if ($i != $num_links) {
$output .= ' item-'.$i.''}//задаст каждому элемену класс "item-'его_порядковый_номер'"
else {$output .= ' last'; }//задаст последнему эдементу класс "last"
$i++;
}
$output .= '</ul>';
return $output;
}
?>
Теперь у каждого пункта меню по идее должен быть свой класс (item-1, item-2...), а там уже поиграйтесь с CSS задавая на основе определенного годительского класса определенный стиль его дочерним элементам (по вашему примеру что-то типа: ul.класс li.item-3 li {стиль оформления пунктов 3.1, 3.2...}).
P.S. Возможно не сработает, возможно сработает, но кто-то назовет такую реализацию сделанной через "Ж", но по крайней мере лучше попытаться что-то сделать методом проб и ошибок, нежели сидеть без дела.
Спасибо, попробую
BadD у тебя получилось???
Мне тоже такое надо, но у меня почему то не работает
Добавьте вот это:
<?phpfunction THEMENAME_menu_item($link, $has_children, $menu = '', $in_active_trail = FALSE, $extra_class = NULL) {
$class = ($menu ? 'expanded' : ($has_children ? 'collapsed' : 'leaf'));
if (!empty($extra_class)) {
$class .= ' '. $extra_class;
}
if ($in_active_trail) {
$class .= ' active-trail';
$link = '<span>'.$link.'</span>';
}
static $imm = 0;
$imm += 1;
return '<li class="'. $class .' m'.$imm.'">'. $link . $menu ."</li>\n";
}
?>
У метода один минус - при добавлении новых пунктов меню, ID меняется.