Navigation: Horizontal/Dropdown mit aktiver Hauptkategorie?

Wie verwendet man Templates oder erstellt Navigationen und passt diese an.

Navigation: Horizontal/Dropdown mit aktiver Hauptkategorie?

Beitragvon Zuperfly » 12. Okt 2007, 10:11

Ich verwende die horizontale Dropdown-Navigation (http://www.redaxo.de/168-Templatedetails.html?template_id=27), klappt auch soweit alles wunderbar. Einziges Problem: Die jeweils aktive Haupt-Kategorie wird nicht hervorgehoben und es ist daher nicht ersichtlich, in welcher Kategorie man sich gerade befindet.

Ich weiss leider nicht, wie ich im Template-Code der aktiven Oberkategorie eine CSS-Klasse verpassen kann; hat das schonmal jemand gemacht oder hat jemand eine Menü-Alternative, bei der das bereits funktioniert? Vielen Dank!
Zuperfly
 
Beiträge: 214
Registriert: 17. Mär 2006, 17:42

Beitragvon n.ruediger » 12. Okt 2007, 10:24

Hallo,

tausche einfach die Zeile

Code: Alles auswählen
    $horizontal_drop_down_nav .= "\n".'<li><a';


gegen folgende aus:

Code: Alles auswählen
    if ($lev1->getId() == $path1) {
      // Aktiver Hauptpunkt
      $horizontal_drop_down_nav .= "\n".'<li id="active"><a';
    } else {
      // Inaktiver Hauptpunkt
      $horizontal_drop_down_nav .= "\n".'<li><a';
    }

    if ($lev1Size != "0") {
      $horizontal_drop_down_nav .= ' class="drop"';
    }
    $horizontal_drop_down_nav .= ' href="'.$lev1->getUrl().'" title="'.$lev1->getName().'">'.$lev1->getName().'';


Natürlich kannst du die id anpassen oder auch eine Klasse hinzufügen.

Liebe Grüße,
Nicole
Zuletzt geändert von n.ruediger am 12. Okt 2007, 11:38, insgesamt 2-mal geändert.
Benutzeravatar
n.ruediger
 
Beiträge: 418
Registriert: 21. Mär 2007, 11:25
Wohnort: Frankfurt (Oder)

Beitragvon Zuperfly » 12. Okt 2007, 10:47

Super, vielen Dank für die schnelle Antwort. Ich habe nun folgenden Code im Template:
Code: Alles auswählen
if ($lev1->isOnline(true)) {
    // 1st level has sub-categories?
    $lev1Size = sizeof($lev1->getChildren(true));
   
    // $horizontal_drop_down_nav .= "\n".'<li><a';
   
    if ($lev1->getId() == $path[0]) {
      // Aktiver Hauptpunkt
      $horizontal_drop_down_nav .= "\n".'<li id="active"><a';
    } else {
      // Inaktiver Hauptpunkt
      $horizontal_drop_down_nav .= "\n".'<li><a';
    }
   
    if ($lev1Size != "0") {
      $horizontal_drop_down_nav .= ' class="drop"';
    }
    $horizontal_drop_down_nav .= ' href="'.$lev1->getUrl().'" title="'.$lev1->getName().'">'.$lev1->getName().'';
   


Allerdings wird die Klasse "active" wohl nicht vergeben, sie taucht im Quelltext nicht auf. Könnte das 'was mit der Artikelweiterleitung zu tun haben, die ich verwende? Ich habe folgende Menüstruktur:

- Hauptmenüpunkt
- Untermenüpunkt 1
- Untermenüpunkt 2
- etc.

Wobei ein Klick auf den Hauptmenüpunkt gleich an den ersten Untermenüpunkt weiterleitet. Und hier sollte dann eigentlich der Hauptmenüpunkt hervorgehoben werden..
Zuperfly
 
Beiträge: 214
Registriert: 17. Mär 2006, 17:42

Beitragvon n.ruediger » 12. Okt 2007, 10:52

Hallo,

sorry, ich hatte einen Fehler im Skript. Es muss $path[1] und nicht $path[0] heißen. Habe das oben schon geändert. Dann sollte es eigentlich gehen und die Weiterleitung sollte auch kein Problem sein, da der Path abhängig vom aktiven Menüpunkt generiert wird (also erscheint auch beim Unterpunkt der Hauptpunkt im Path).

Liebe Grüße,
Nicole
Benutzeravatar
n.ruediger
 
Beiträge: 418
Registriert: 21. Mär 2007, 11:25
Wohnort: Frankfurt (Oder)

Beitragvon Zuperfly » 12. Okt 2007, 11:14

Hm, also bei mir sieht der erzeugte Quellcode auch mit path=[1] noch so aus:

Code: Alles auswählen
<li>
<a class="drop" href="meinseseite.html" title="Meine Seite">
Meine Seite
<!--[if IE 7] >
< !-->
</a>
<!--
< ![endif]-->


Hier nochmals der komplette Code-Abschnitt aus dem Template:
Code: Alles auswählen
// START 1st level categories
$horizontal_drop_down_nav .= '<ul class="nav1st">';
foreach (OOCategory::getRootCategories() as $lev1) {
 
  if ($lev1->isOnline(true)) {
    // 1st level has sub-categories?
    $lev1Size = sizeof($lev1->getChildren(true));
   
    // $horizontal_drop_down_nav .= "\n".'<li><a';
   
    if ($lev1->getId() == $path[1]) {
      // Aktiver Hauptpunkt
      $horizontal_drop_down_nav .= "\n".'<li class="active"><a';
    } else {
      // Inaktiver Hauptpunkt
      $horizontal_drop_down_nav .= "\n".'<li><a';
    }
   
    if ($lev1Size != "0") {
      $horizontal_drop_down_nav .= ' class="drop"';
    }
    $horizontal_drop_down_nav .= ' href="'.$lev1->getUrl().'" title="'.$lev1->getName().'">'.$lev1->getName().'';
   
    // 1st level had sub-categories? -> go on


Mir leuchtet auch ein, was passieren sollte, aber ich weiss nicht, warum es nicht passiert ... ;)
Zuperfly
 
Beiträge: 214
Registriert: 17. Mär 2006, 17:42

Beitragvon n.ruediger » 12. Okt 2007, 11:17

Hallo,

ist das Projekt online? Ansonsten baue ich das mal auf meinem Testsystem nach.

Liebe Grüße,
Nicole
Benutzeravatar
n.ruediger
 
Beiträge: 418
Registriert: 21. Mär 2007, 11:25
Wohnort: Frankfurt (Oder)

Beitragvon Zuperfly » 12. Okt 2007, 11:29

Ich weiss nicht, warum, aber mit
Code: Alles auswählen
if ($lev1->getId() == $path1) {
funktioniert's wunderbar! Vielen Dank für die Hilfe!
Zuperfly
 
Beiträge: 214
Registriert: 17. Mär 2006, 17:42

Beitragvon n.ruediger » 12. Okt 2007, 11:39

Ach verdammt, wer lesen kann ist klar im Vorteil. Das Array in dem Template heißt $PATH und wird aber schon in die Variable $path1 geschrieben... Naja, jetzt funktioniert es wenigstens und geupdated ist es oben auch...

Liebe Grüße,
Nicole
Benutzeravatar
n.ruediger
 
Beiträge: 418
Registriert: 21. Mär 2007, 11:25
Wohnort: Frankfurt (Oder)


Zurück zu Templates/Navigationen [R3]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast