brauche "spezielle" Navigation

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

brauche "spezielle" Navigation

Beitragvon critical.error » 2. Aug 2007, 23:48

Hallo,
ich habe mich heute etwas mit Redaxo beschäftigt und möchte nun eine Webseite damit umsetzen.
Bei meinem Layout habe ich ein Dropdown-Menü, also brauche ich dafür eine verschachtelte Liste.
Wenn ein Hauptlink (Kategorie) angewählt ist, soll das <li> class="current" haben - soweit so gut, gibt es bei den Templates - ABER wenn ich einen Artikel angewählt habe, soll die Kategorie weiterhin class="current" besitzen.

Wäre toll, wenn mir jemand helfen könnte!

Zum besseren Verständnis hier ein Bild:
Bild
critical.error
 
Beiträge: 17
Registriert: 2. Aug 2007, 23:43

Beitragvon Alex » 3. Aug 2007, 08:18

Hallo und herzlich Willkommen critical.error!

Versuchs mal mit dieser Navigation:

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="current"><a 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="current"><a class="current" href="'.$lev2->getUrl().'">'.$lev2->getName().'</a>';
                  }
                  // 2nd level - no active link
                  else {
                     $nav .= '<li><a ';
                $nav .= '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="current"><a href="'.$lev3->getUrl().'">'.$lev3->getName().'</a></li>';
                              }
                              // 3rd level - no active link
                              else {
                                 //$nav .= '<li><a href="'.$lev3->getUrl().'">'.$lev3->getName().'</a></li>';
                        
                         $nav .= '<li><a ';
                            $nav .= '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;
?>



Gruß
Alex
Benutzeravatar
Alex
 
Beiträge: 76
Registriert: 13. Jan 2005, 15:41
Wohnort: Schortens

Beitragvon critical.error » 3. Aug 2007, 12:31

Hallo,
die hatte ich schon probiert.
Allerdings ist die untergeordnete <ul>-Liste dort nur zu sehen, wenn der entsprechende Punkt angewählt wurde.

Ich möchte für mein Dropdown-Menü aber, dass die GESAMTE verschachtelte Liste IMMER zu sehen ist :)

Noch eine Frage: Mit welchem Befehl binde ich ein Template in ein anderes Template ein?
critical.error
 
Beiträge: 17
Registriert: 2. Aug 2007, 23:43

Beitragvon Markus.Staab » 3. Aug 2007, 12:35

Hi,

critical.error hat geschrieben:Noch eine Frage: Mit welchem Befehl binde ich ein Template in ein anderes Template ein?


Code: Alles auswählen
   include $REX['INCLUDE_PATH']."/generated/templates/$navTemplateId.template";

Gruß,
Markus
Benutzeravatar
Markus.Staab
Entwickler
 
Beiträge: 9781
Registriert: 29. Jan 2005, 14:50
Wohnort: Aschaffenburg/Germany

Beitragvon critical.error » 3. Aug 2007, 12:49

d.h. bei ID = 3

Code: Alles auswählen
   include $REX['INCLUDE_PATH']."/generated/templates/3.template";


oder wie genau?
critical.error
 
Beiträge: 17
Registriert: 2. Aug 2007, 23:43

Beitragvon Markus.Staab » 3. Aug 2007, 12:53

Hi,

genauso.

Gruß,
Markus
Benutzeravatar
Markus.Staab
Entwickler
 
Beiträge: 9781
Registriert: 29. Jan 2005, 14:50
Wohnort: Aschaffenburg/Germany

Beitragvon raybeam » 3. Aug 2007, 15:13

Hallo,

critical.error hat geschrieben:Ich möchte für mein Dropdown-Menü aber, dass die GESAMTE verschachtelte Liste IMMER zu sehen ist :)


hast Du dir dieses Template auch schon näher angesehen?
http://www.redaxo.de/168-Templatedetails.html?template_id=24

Gruß

Peter
Benutzeravatar
raybeam
 
Beiträge: 445
Registriert: 5. Feb 2006, 20:30

Beitragvon critical.error » 3. Aug 2007, 15:54

ja, ehrlichgesagt war mir die zu umfangreich und ich habe sie nicht zum laufen bekommen. ich verstehe nicht so ganz, was man da so alles einstellen muss, wenn ich sie normal einbinde, dann wird sie mir gar nicht erst angezeigt. :(
critical.error
 
Beiträge: 17
Registriert: 2. Aug 2007, 23:43

Beitragvon raybeam » 3. Aug 2007, 17:57

Zugegeben,

auf den ersten Blick kann sie einen schon ein wenig erschlagen. Eigentlich sollte die Einbindung des Navigationstemplates aber einfach dadurch gelingen, dass Du in dem Bereich deines Seitentemplates, in dem die Navigation erscheinen soll ein

Code: Alles auswählen
print $navigation


einträgst. Zuvor musst Du natürlich das Navigationstemplate in dein Seitentemplate eingebunden haben

Code: Alles auswählen
$navTemplateId = '14'; <- Hier die ID des Navigations-Templates in deiner Struktur

// Navigation einbinden /////////////////////////////////
   include $REX['INCLUDE_PATH']."/generated/templates/$navTemplateId.template";


Die Darstellung deiner Navigation steuerst Du über den " M E N Ü - U M S C H A L T E R " im unteren Bereich des Templates. Standardmäßig wird eine <ul>-Liste generiert, die die Untermenüpunkte der aktuellen Rootkategorie anzeigt.

Änderst Du den "Schalter" von

Code: Alles auswählen
$subUl = 'on';


auf

Code: Alles auswählen
$subUl = 'allOn';


werden die Untermenüpunkte aller Rootkategorien ständig angezeigt.

Das war's dann auch schon :wink:
Benutzeravatar
raybeam
 
Beiträge: 445
Registriert: 5. Feb 2006, 20:30

Beitragvon critical.error » 3. Aug 2007, 20:44

Besten Dank, so funktioniert es! :)
critical.error
 
Beiträge: 17
Registriert: 2. Aug 2007, 23:43

Beitragvon critical.error » 3. Aug 2007, 22:08

Ich habe noch eine kleine Frage, die nicht direkt mit dem Thema zu tun hat, wollte dafür aber kein extra-Thema aufmachen.
Ich möchte den Namen der aktuellen Kategorie ausgeben lassen, wie kann ich das erreichen?

Danke!
critical.error
 
Beiträge: 17
Registriert: 2. Aug 2007, 23:43

Beitragvon raybeam » 4. Aug 2007, 18:53

Z. B. so:

Code: Alles auswählen
$cat = OOCategory::getCategoryById($this->getValue(category_id));
echo $cat->getName();


Kleiner Tipp: Schmöker mal durch die Quelltexte der Module im Downloadbereich, da gibt's eine Menge zu sehen und zu lernen :wink:

Mehr zur Objektorientierung in Redaxo findest Du hier:

http://www.redaxo.de/44-0-c6-00-object-oriented-framework.html

Insbesondere der Link zu Webbude sowie die dortige PDF-Übersicht ist sehr empfehlenswert. Die habe ich immer griffbereit und gerade habe ich auch wieder reingeschaut. Man kann nicht alles behalten :)

Gruß

Peter
Benutzeravatar
raybeam
 
Beiträge: 445
Registriert: 5. Feb 2006, 20:30

Beitragvon critical.error » 4. Aug 2007, 20:02

danke!
sag mal, gibt es die möglichkeit bei der navigation in der geschachtelten <ul>-Liste (level2) nicht die unterKATEGORIEN, sondern die in der Kategorie enthaltenen Artikel anzuzeigen?
critical.error
 
Beiträge: 17
Registriert: 2. Aug 2007, 23:43


Zurück zu Templates/Navigationen [R3]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast