primlinks active
am 18.06.2009 - 07:14 Uhr in
Hallo liebe Drupaler,
noch eine kleine Frage nebenbei:
Habe den Primary Links meiner Drupalinstallation einfach mal ein neues Aussehen verpasst. Benutze kein vorgefertigtes Theme, sondern ein komplett selbst erstelltes. Nun habe ich - zu dem bereits vorhandenen Link auf die Startseite - einen Link auf eine Unterkategorie der Suche gesetzt und der will mir patout den Link nicht auf active setzen!
Gibt es eine Möglichkeit, das irgendwie manuell in meine page.tpl.php zu schreiben?
Nach dem Motto if active add class active oder so?
LG cK
- Anmelden oder Registrieren um Kommentare zu schreiben

active trail
am 18.06.2009 - 08:01 Uhr
Moin.
Für gewöhnlich funktioniert das über die Funktion menu_get_active_trail.
Da Du den Link jedoch per Hand einbaust, kannst Du auch eine kleine eigene Hilfsfunktion verwenden.
Lustigerweise hatte ich gestern exakt soetwas gebaut:
<?phpfunction link_is_active($href) {
$path = implode('/', arg());
if ($path_elements == $href) {
return TRUE;
}
}
function link_is_in_active_trail($href) {
$path = implode('/', arg());
if (strpos($path, $href) > -1) {
return TRUE;
}
}
?>
Diese beiden Funktionen packst Du in Deine template.php und kannst sie dann an beliebiger Stelle aufrufen.
<?php$href = 'node/123';
$classes = '';
if (link_is_active($href)) {
$classes .= ' active';
}
if (link_is_in_active_trail($href)) {
$classes .= ' active-trail';
}
print l(t('my link title'), $href, 'attributes' => array('class' => $classes));
?>
hth,
Stefan
--
sei nett zu Deinem Themer
hey thx
am 18.06.2009 - 14:24 Uhr
danke erstmal...stefan dir sollte ein Orden verliehen werden
print l(t('my link title'), $href, 'attributes' => array('class' => $classes));ist dass eine liste oder was? li oder nicht?
wie ruf ich die denn dann auf? Würd sie halt gerne über das Admin-Theme verwalten..
Möchte sie in Primary Links haben geht das?
Links
am 18.06.2009 - 14:33 Uhr
danke erstmal...stefan dir sollte ein Orden verliehen werden
Schonwieder? Äh ich meinte: au ja toll ... :-)
ist dass eine liste oder was? li oder nicht?
l()
wie ruf ich die denn dann auf? Würd sie halt gerne über das Admin-Theme verwalten..
Möchte sie in Primary Links haben geht das?
Hm. Dann pack den Link doch einfach in das Menü "primary links" rein. Damit hast Du dann auch gleich automagisch die "active"-Klassen.
hth,
Stefan
--
sei nett zu Deinem Themer
Bitte, ein wenig Nachhilfe
am 23.07.2009 - 18:36 Uhr
Bevor ich diesen thread sah, habe ich jenen eröffnet:
http://www.drupalcenter.de/node/20279
Leider verstehe weder Deine Funktion noch menu_get_active_trail
Wenn ich es richtig verstehe ist, kann ich mit menu_get_active_trail einen Link aktivieren?
Ich habe in meiner node.tpl.php folgendes versucht:
menu_set_active_menu_name('menu-rubrik');if ( (arg(0) == 'node' && is_numeric(arg(1))) ) {
$path_prefix = 'taxonomy/term/';
if (!(count ($node->taxonomy) == 0)) {
foreach($node->taxonomy as $term) {
if ($term->vid == 1) {
$location[] = array('href' => 'http://localhost/drupal'.$path_prefix.($term->tid), 'attributes' => array('class' => active));
menu_set_active_trail($location);
}
}
}
}
Funzt leider nicht.
Sorry noch mal korrigiert
am 23.07.2009 - 18:43 Uhr
Also mein script für node.tpl.php sieht jetzt so aus (ohne zu funktionieren):
menu_set_active_menu_name('menu-rubrik');if ( (arg(0) == 'node' && is_numeric(arg(1))) ) {
$path_prefix = 'taxonomy/term/';
foreach($node->taxonomy as $term) {
if ($term->vid == 1) {
$location[] = array('href' => $path_prefix.($term->tid), 'attributes' => array('class' => 'active'));
menu_set_active_trail($location);
}
}
}