[SOLVED] Templ."3 Ebenen / Liste mit li-Tags" anpassen, wie?

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

[SOLVED] Templ."3 Ebenen / Liste mit li-Tags" anpassen, wie?

Beitragvon Include » 23. Feb 2011, 15:29

Hallo, redaxos!
Ich verwende die gute alte 3 Ebenen / Liste mit li-Tags Navigation.

Nun möchte ich sie um eine Kleinigkeit anpassen aber bekomme es nicht hin.
Es geht nur darum das die angezeigte Seite in der Navigation ein ">" dem aktiven Menüpunkt vorangestellt bekommt. Ich habe es quick'n dirty einfach erst mal so in die Navi reingeschrieben.

if ($lev1->isOnline(true)):
if ($lev1->getId() == $path1) {
$nav .= '<li id="active"><a id="current" href="'.$lev1->getUrl().'"> > '.$lev1->getName().'</a>';
}

Das Problem ist jetzt nur das eine Kategorie immer noch mit der spitzen Klammer ausgezeichnet wird wenn ich eigentlich schon in einer Unterkategorie bin. Dadurch werden beide Navpunkte hervorgehoben was ich nicht will. Ich möchte wirklich nur die angezeigte Seite in der Navi auszeichnen.

So siehts aus:
Bild
Aber eigentlich soll eben nur "Kat 1.1" einen Haken haben.

Hier der Code:
Code: Alles auswählen
<?php
// EXPLODE PATH
$PATH = explode("|",$this->getValue("path").$this->getValue("article_id")."|");

// GET CURRENTS
$path1 = $PATH[1];
$path2 = $PATH[2];
$path3 = $PATH[3];


/* START 1st level categories */
$nav .= '<ul class="nav1st">';
foreach (OOCategory::getRootCategories() as $lev1) {
     
   if ($lev1->isOnline(true)):
      if ($lev1->getId() == $path1) {
         $nav .= '<li class="active"><a class="current" href="'.$lev1->getUrl().'"> > '.$lev1->getName().'</a>';
      }
      // 2nd level - no active link
      else {
         $nav .= '<li><a href="'.$lev1->getUrl().'">'.$lev1->getName().'</a>';
      }
         
      // 1st level had categories? -> go on
      $lev1Size = sizeof($lev1->getChildren());
   
      if ($lev1->getId() == $path1) {
         if ($lev1Size != "0") {
            $nav .= '<ul class="nav2nd">';

            // START 2nd level categories
            foreach ($lev1->getChildren() as $lev2):
               if ($lev2->isOnline(true)) {
                  // 2nd level - active link
                  if ($lev2->getId() == $path2) {
                     $nav .= '<li class="active"><a class="current" href="'.$lev2->getUrl().'"> > '.$lev2->getName().'</a>';
                  }
                  // 2nd level - no active link
                  else {
                     $nav .= '<li><a href="'.$lev2->getUrl().'">'.$lev2->getName().'</a>';
                  }
                 
                  // 2nd level had categories? -> go on
                  $lev2Size = sizeof($lev2->getChildren());
   
                  if ($lev2->getId() == $path2) {
                     if ($lev2Size != "0") {
                        $nav .= '<ul class="nav3rd">';

                        // START 3rd level categories
                        foreach ($lev2->getChildren() as $lev3):
                           if ($lev3->isOnline(true)) {
                              // 3rd level - active link
                              if ($lev3->getId() == $path3) {
                                 $nav .= '<li class="active"><a class="current" href="'.$lev3->getUrl().'">'.$lev3->getName().'</a></li>';
                              }
                              // 3rd level - no active link
                              else {
                                 $nav .= '<li><a href="'.$lev3->getUrl().'">'.$lev3->getName().'</a></li>';
                              }
                           }
                        endforeach;
                        // END 3rd level categories
     
                        $nav .= '</ul>';
                     } // END by if ($lev2Size != "0"):
                  }
                  $nav .= '</li>';
               }
            endforeach;
            // END 2nd level categories
     
            $nav .= '</ul>';
         } // END by if ($lev1Size != "0"):
      }
      $nav .= '</li>';

   endif; // END by if ($lev1->isOnline())
}
$nav .= '</ul>';
// END 1st level categories

print $nav;
?>


Stehe auf dem Schlauch. Kann jemand helfen?
Zuletzt geändert von Include am 4. Mär 2011, 12:15, insgesamt 1-mal geändert.
Include
 
Beiträge: 100
Registriert: 30. Mär 2007, 20:22

Re: Templ. "3 Ebenen / Liste mit li-Tags" anpassen, wie?

Beitragvon darwin » 24. Feb 2011, 15:33

HI...
du hast in der 2. ebene auch noch den Pfeil drin:
Code: Alles auswählen
// START 2nd level categories
            foreach ($lev1->getChildren() as $lev2):
               if ($lev2->isOnline(true)) {
                  // 2nd level - active link
                  if ($lev2->getId() == $path2) {
                     $nav .= '<li class="active"><a class="current" href="'.$lev2->getUrl().'"> HIER STEH NOCH EIN PFEIL > '.$lev2->getName().'</a>';
                  }
                  // 2nd level - no active link
                  else {
                     $nav .= '<li><a href="'.$lev2->getUrl().'">'.$lev2->getName().'</a>';
                  }

*>*
grz. Chris
Benutzeravatar
darwin
 
Beiträge: 1261
Registriert: 2. Jan 2007, 16:10
Wohnort: LA

Re: Templ. "3 Ebenen / Liste mit li-Tags" anpassen, wie?

Beitragvon Include » 24. Feb 2011, 21:46

hi chris, danke für deine antwort aber das soll ja auch so sein.
deswegen schrieb ich ja auch:
Aber eigentlich soll eben nur "Kat 1.1" einen Haken haben.

mir geht es darum das wirklich NUR die aktive seite eine spitze klammer bekommt und nicht auch noch die kategorie darüber.

grübel
Include
 
Beiträge: 100
Registriert: 30. Mär 2007, 20:22

Re: Templ. "3 Ebenen / Liste mit li-Tags" anpassen, wie?

Beitragvon NGW » 4. Mär 2011, 09:02

Probiers mal mit
Code: Alles auswählen
foreach (OOCategory::getRootCategories() as $lev1) {
     
   if ($lev1->isOnline(true)):
      if ($lev1->getId() == $path1 && $lev1->getId() == $this->getValue("category_id")) {
         $nav .= '<li class="active"><a class="current" href="'.$lev1->getUrl().'"> > '.$lev1->getName().'</a>';
      }

statt
Code: Alles auswählen
foreach (OOCategory::getRootCategories() as $lev1) {
     
   if ($lev1->isOnline(true)):
      if ($lev1->getId() == $path1) {
         $nav .= '<li class="active"><a class="current" href="'.$lev1->getUrl().'"> > '.$lev1->getName().'</a>';
      }


Grüße,
Nico
NGW
 
Beiträge: 47
Registriert: 1. Mär 2011, 08:12

Re: Templ. "3 Ebenen / Liste mit li-Tags" anpassen, wie?

Beitragvon Include » 4. Mär 2011, 12:13

Äh, genau das ist es!
Danke!!
Ich hab es gestern Abend zufällig auch selbst mit einem anderen Weg gemacht.
Habe umständlich mit einer if Schleife abgefragt ob $path1 && $path2 nicht leer sind und dann den anderen Link ohne Klammer geschrieben.
Code: Alles auswählen
      if ($path1 != "" && $path2 != "") {
         $nav .= '<li class="active"><a class="current" href="'.$lev1->getUrl().'">'.$lev1->getName().'</a>';
      } else {

         $nav .= '<li class="active"><a class="current" href="'.$lev1->getUrl().'"> &gt; '.$lev1->getName().'</a>';
      }

Dein Weg ist natürlich viel professioneller. Ich werde ihn nehmen.
1000 Dank!
Include
 
Beiträge: 100
Registriert: 30. Mär 2007, 20:22


Zurück zu Templates/Navigationen [R4]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast