Aktiver Menüpunkt sieht nicht so aus, wie ich es will
am 26.05.2008 - 17:52 Uhr in
Ich möchte, dass der Menüpunkt der gerade aktiven Seite eine andere Farbe als die anderen Menüpunkte hat.
Auf der Suche im Forum bin ich schon mal auf einen Tip gekommen, der mir kurz ein Lächeln aufs Gesicht gezaubert hat, sich im Endeffekt aber doch nicht als Lösung dargestellt hat.
Mit der folgenden Funktion in der teplate.php schaffe ich es wenigstens, den aktiven Menüpunkt anders zu gestalten:
/**
* überschreibt theme_menu_item() aus includes/menu.inc
*
* fügt zusätzlich eine class 'active' für alle aktiven menupunkte zum <li>-element
*/
function phptemplate_menu_item($mid, $children = '', $leaf = TRUE) {
$item = menu_get_item($mid); // hole den jeweiligen menupunkt
if ((drupal_get_normal_path($item['path']) == $_GET['q']) // pfad aktiv?
|| (drupal_is_front_page() && $item['path'] == '<front>') // oder sind wir auf der startseite?
|| menu_in_active_trail($mid)) { // oder sind wir irgendwo im aktiven pfad, also in einem übergeordneten element des gerade angewählten?
$active = ' active ';
} else {
$active = '';
}
return
'<li class="' . $active . ($leaf ? 'leaf' : ($children ? 'expanded' : 'collapsed')) .'">'. menu_item_link($mid) . $children ."</li>\n";
}Nun kann ich z.B. die Schriftgröße des aktiven Menüpunktes über mein CSS verändern, aber nicht die Farbe.
ul.menu li.activeleaf {
font-size: 22px;
color: red;
background-color: yellow;
}Damit wird die Schrift groß, und gelb hinterlegt. Rot wird sie aber nicht.
Woran liegt das?
Vielen Dank!
- Anmelden oder Registrieren um Kommentare zu schreiben

Hallo VincentPaige, Drupal
am 26.05.2008 - 21:41 Uhr
Hallo VincentPaige,
Drupal vergibt an den aktiven Menüpunkt eigentlich automatisch die Klasse active.
Die Schriftfarbe wird nicht geändert, da es sich bei der Schrift um einen Link handelt
und die Linkfarbe die von dir gesetzte Farbe überschreibt.
Folgendes sollte Abhilfe schaffen
ul.menu li.activeleaf a{color: red;
}
Grüße,
Robin
Tatsächlich
am 27.05.2008 - 07:32 Uhr
Hallo Robin,
vielen Dank für die schnelle Antwort.
Da hätt ich eigentlich selber drauf kommen müssen :-)
Aber Hauptsache es funktioniert jetzt.
Die oben genannte Funktion muss ich aber schon drin lassen, sonst gehts nicht.
Allerdings mit einer kleinen Änderung:
falsch:
$active = ' active ';richtig:
$active = ' active';(Also das hinter Leerzeichen nach active weg lassen.)
Vielen Dank nochmal!
Gruß
Michael