Navigation, 2. Ebene Hover bei aktiv eingeblendet lassen

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

Navigation, 2. Ebene Hover bei aktiv eingeblendet lassen

Beitragvon a.albrecht » 5. Feb 2012, 18:01

Hallo Leute!

Ich habe eine horizontale Navigation, die zunächst die erste Ebene (Kategorien) ausgibt. Mit a:hover wird die zweite Ebene unter dem entsprechenden Link angezeigt. So soll es sein. Wenn ich jetzt auf einen Unterpunkt im Hover-Menü geklickt habe und auf die Unterseite wechsel, soll die Subnavi stehen bleiben, sprich, display: block; - wie kann ich das machen? Oder ist es besser, ein Template anzulegen für die Unterseiten, die dann die Subnavi noch mal ausgibt, ohne hover?!
a.albrecht
 
Beiträge: 80
Registriert: 17. Dez 2008, 22:43

Re: Navigation, 2. Ebene Hover bei aktiv eingeblendet lassen

Beitragvon Oliver.Kreischer » 5. Feb 2012, 20:35

Hallo,

wenn Du die rex_navigation::factory benutzt hast Du ja die Klasse "li .rex-current" mit der Du etwas anfangen kannst. Beispiel: seiblishof.com

LG
Oliver
Zuletzt geändert von Oliver.Kreischer am 7. Feb 2012, 07:57, insgesamt 1-mal geändert.
http://kreischer.de - "It's very simple - you read the protocol and write the code." - Bill Joy
Benutzeravatar
Oliver.Kreischer
 
Beiträge: 1821
Registriert: 16. Dez 2004, 23:03
Wohnort: Feldafing

Re: Navigation, 2. Ebene Hover bei aktiv eingeblendet lassen

Beitragvon a.albrecht » 6. Feb 2012, 13:23

Genau, wie es auf der Beispielseite Seiblishof ist, benötige ich es. Ich arbeite mit folgendem Modul, welches auf der Redaxo-Seite zum Download stand, in leicht geänderter Form:

Code: Alles auswählen
    <ul id="navigation">
<?php      

$PATH = explode('|',$this->getValue('path').$this->getValue('article_id').'|');
$path1 = $PATH[1];
$path2 = $PATH[2];

foreach (OOCategory::getRootCategories() as $lev1):
   if($lev1->isOnline()):
      $i == 0;
      
      if($i==0) {
      echo '<li class="first"><a href="#">'.$lev1->getName().'</a>';
      } else {
         
         if($i==5) {
         echo '<li class="last"><a href="#">'.$lev1->getName().'</a>';
         } else {
         echo '<li><a href="#">'.$lev1->getName().'</a>';
         }
      }
         
      
      $lev1Size = sizeof($lev1->getChildren());
      if($lev1Size != "0"):
         
         if($i==0) {
         echo '<ul id="second" style="left: 49px;">';
         } elseif($i==1) {
         echo '<ul id="second" style="left: 158px;">';
         } elseif($i==2) {
         echo '<ul id="second" style="left: 331px;">';
         } elseif($i==3) {
         echo '<ul id="second" style="left: 49px;">';
         } elseif($i==4) {
         echo '<ul id="second-5" style="right: -293px;" >';
         } elseif($i==5) {
         echo '<ul id="second-6" style="right: 0px;>';
         } else {
         echo '<ul id="second">';
         }

         
         foreach ($lev1->getChildren() as $lev2):

            if ($lev2->isOnline()):
               if(($lev2->getId() == $path2)) {
                  echo '<li class="on"><a href="'.$lev2->getUrl().'">'.$lev2->getName().'</a></li>';
               } else {
                  echo '<li><a href="'.$lev2->getUrl().'">'.$lev2->getName().'</a></li>';
               }
            endif;
         endforeach;
         echo '</ul>';
      endif;
      
      echo '</li>';      
   endif;
   $i++;
endforeach;

?>
    <div class="clear"></div>
    </ul>
     <!-- #navigation -->


Der if-Kram ist notwendig, damit ich die Unterpunkte positionieren kann. Das hier verwendete Script ist aber nicht das von dir angesprochene rex_navigation oder?!
a.albrecht
 
Beiträge: 80
Registriert: 17. Dez 2008, 22:43

Re: Navigation, 2. Ebene Hover bei aktiv eingeblendet lassen

Beitragvon Oliver.Kreischer » 6. Feb 2012, 13:31

Hi,

ich nutze nur die rex_navigation::factory.
Der Rest ist CSS und JS. Guck doch einfach in den Quellcode der Seite...

LG
Oliver
Zuletzt geändert von Oliver.Kreischer am 7. Feb 2012, 07:57, insgesamt 1-mal geändert.
http://kreischer.de - "It's very simple - you read the protocol and write the code." - Bill Joy
Benutzeravatar
Oliver.Kreischer
 
Beiträge: 1821
Registriert: 16. Dez 2004, 23:03
Wohnort: Feldafing

Re: Navigation, 2. Ebene Hover bei aktiv eingeblendet lassen

Beitragvon a.albrecht » 6. Feb 2012, 14:19

Die Ausgabe der Hauptkategorien habe ich mittels des Scripst oben geschafft. Leider werden die Unterpunkte nicht angezeigt. Sind innerhalb der Kategorien weitere Kategorien oder werden innerhalb einer Kategorie Artikel angelegt?

Oder sorgt dafür der JS Teil? Welcher ist dafür zuständig?
a.albrecht
 
Beiträge: 80
Registriert: 17. Dez 2008, 22:43

Re: Navigation, 2. Ebene Hover bei aktiv eingeblendet lassen

Beitragvon Oliver.Kreischer » 7. Feb 2012, 08:34

Hi,

leider habe ich es nicht mehr geschafft mir das genau anzugucken.
Ich beschreibe hier aber mal kurz wie ich solche Probleme angehe...

Fall A:
Alles ist klar. Ich weiß wie es geht und schreibe eben alles selbst. Ende

Fall B:
Ich weiß was ich will und habe keine oder nur eine ungefähre Ahnung wie das gewünschte erstellt wird.

Als erstes suche ich mir Beispiele und Anleitungen für das Gewünschte im Web. Wenn ich ein Tutoriual finde baue ich es nach und hab meistens schon mein Ziel erreicht. Wenn ich kein Tut finde muss ich - wenn vorhanden eine Seite bei der das gewünschte schon ähnlich realisiert wurde auseinandernahemen. Also speichere ich die Seite lokal, öffne alle relevanten Seiten in einem Editor und fangen an alles zu löschen was mich nicht interessiert. Nach jedem löschen gucke ich natürlich ob das was ich wollte noch funktioniert. Wenn ich alles überflüsige gelöscht habe kontrolliere ich das Ergebnis auf Fehler, passe die vorhandenen Funktionen noch meinen Wünschen an und habe nur ein gutes Grundegeüst.

Jetzt sehe ich den Quellcode so wie ich Ihn als Ausgabe aus dem CMS (egal welches) benötige.
Als fange ich an die Ausgaben zu entwickeln. Ziel ist es jetzt nur das CMS dazu zu bringen den Wunsquellcode auszugeben. Evtl. benötigte Dateien (JS, CSS usw..) die ich für "meine" angepasste Augabe benötige werden jetzt noch ignoriert.

Erst wenn der dynamisch ausgegebene Quellcode dem vorher statische erstellten Beispielcode gleicht fange ich an die Anpassungen für die Ausgabe zu integrieren.

Bis jetzt hat diese Vorgehensweise immer funktioniert.

Und in Kurzform: Ich entwickle erst statisch "ohne CMS". Wenn das funktioniert sage ich dem CMS was es ausgeben soll.

Ich hoffe das hilft ein wenig.

LG
Oliver
http://kreischer.de - "It's very simple - you read the protocol and write the code." - Bill Joy
Benutzeravatar
Oliver.Kreischer
 
Beiträge: 1821
Registriert: 16. Dez 2004, 23:03
Wohnort: Feldafing

Re: Navigation, 2. Ebene Hover bei aktiv eingeblendet lassen

Beitragvon a.albrecht » 7. Feb 2012, 14:55

Dank dir für deine Hilfe. Ich habe etwas weiter probiert, komme damit aber nicht zum gewünschten Effekt. Ich habe das ganze nun anders gelöst. Um diesen Weg zu vervollständigen benötige ich gerade noch einen Tipp zur folgenden Sache:

Ich muss jede Subnavigation anders positionieren, sprich jede ul ul bekommt eine eigene ID.
Jetzt muss ich wissen, welche Hauptkategorie gerade aktiv ist und mit den Unterartikeln vergleichen.

Die aktuelle Seite bzw. ID erhalte ich ja mit
$articleId = $this->getValue(article_id);

Ich brauche eine if-Abfrage um verschiedene Klassen zu vergeben:

if (aktueller Artikel gehört zur Kategorie mit ID 2
<div id="subnav">
if (aktueller Artikel gehört zur Kategorie mit ID 3
<div id="subnav2">
if (aktueller Artikel gehört zur Kategorie mit ID 4
<div id="subnav3">
if (aktueller Artikel gehört zur Kategorie mit ID 5
<div id="subnav4">

kann man dann sicherlich mit else if lösen. Ich weiß, dass es nicht wirklich sauber ist, aber
anders komme ich nicht auf einen anderen Weg - und es funktioniert.
a.albrecht
 
Beiträge: 80
Registriert: 17. Dez 2008, 22:43

Re: Navigation, 2. Ebene Hover bei aktiv eingeblendet lassen

Beitragvon Oliver.Kreischer » 8. Feb 2012, 09:23

Probier mal:
Code: Alles auswählen
$article = OOArticle::getArticleById($this->getValue('article_id'));
    $tree = $article->getParentTree();
$articleRoot=$tree[0]->getID();

LG
Oliver
http://kreischer.de - "It's very simple - you read the protocol and write the code." - Bill Joy
Benutzeravatar
Oliver.Kreischer
 
Beiträge: 1821
Registriert: 16. Dez 2004, 23:03
Wohnort: Feldafing


Zurück zu Templates/Navigationen [R4]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast