Мне понадобилось для активного пункта вертикального меню изменить изображение. Нашел такое решение. Вдруг кому пригодится.
1. Переопределяем в теме функцию theme_menu_item следующим образом:
<?php
function zen_menu_item($mid, $children = '', $leaf = TRUE) {
return '
\n";
}
?>
2. Прописываем в css темы нужное нам отображение:
Буду рад, если кто-то поделится другими способами достичь того же результата.
Комментарии
Дык оно вроде все по умолчанию есть?
У нас есть 3 пункта меню, каждый из которых представляет собой конструкцию
<li class="leaf">
Как при выводе "по умолчанию" определить, для какого из них нужно отобразить особенную картинку, как показано на рисунке:
хм, у меня по-умолчанию присваивается class=active
drupal 5
хм, у меня по-умолчанию присваивается class=active
drupal 5
вот и я про что
Какому элементу присваивается class=active?
Он присваивается активному элементу. В каком разделе находитесь, тот и активный.
Приведите, пожалуйста, фрагмент css при помощи которого при стандартном выводе для элемента меню, который выделен (независимо от того, есть или нет у него дочерние элементы), можно отобразить свою картинку (для темы Garland).
В гарланде в ксс этого фрагмента нет. Но т.к. активный пункт меню выглядит следующим образом:
, т.е. добавляется class="active", то вы можете в ксс добавить следующий код:
color: #000;
}
и изменять вид активного пункта под ваши нужды.
з.ы.: а чтобы поставить картинку, надо будет прописать для li
list-style-image: none;
а бэкграунды прописывать не для классов .leaf, .expanded, .collapsed, а для ссылок, т.е. для "ul li.leaf a" и "ul li.leaf a.active"
так о чем и речь - изображение необходимо прописывать для элемента li (что и показано в примере). Но для нескольких абсолютно одинаковых элементов li в моем случае понадобилось вывести разные изображения, для чего и была переопределена функция генерации меню (чтобы как-то выделить тот элемент li, который содержит активную в настоящий момент ссылку).
А чем вам не разные элементы "ul li.leaf a" и "ul li.leaf a.active" или "ul li.expanded a" и "ul li.expanded a.active", для которых можно вывести разные картинки?
Дело конечно вкуса для какого элемента (li или a) делать бэкграунд, но в примеденном мной варианте не нужно дописывать доп.функцию, а только поправить только ксс.
А как задавая бекграунд для ссылки можно добиться такого же эффекта как при использовании list-style-image ?
Хотя бы так:
list-style: none;
}
.ul li.leaf a {
background: url(одна_картинка.жпг) left no-repeat;
padding-left: 15px;
}
.ul li.leaf a.active {
background: url(вторая_картинка.жпг) left no-repeat;
padding-left: 15px;
}
Спасибо, именно о таком варианте я спрашивал.
Подскажите как быть в случае если мне необходимо назначить фоновое изображение как на тэг li так и на тэг a класса active.
Продемонстрирую на изображении для наглядности.
Буду очень признателен любым предложениям.
тоже нужно к li (активному) картинку приделать. Уже несколько часов ковыряюсь - результата нету.
Уже думаю все тексты в спан кинуть на худой конец