Menüpunkte verschwinden bei IE8

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

Menüpunkte verschwinden bei IE8

Beitragvon Maidenaustria » 6. Mär 2011, 18:02

Hallo!
Ich hab vor einiger Zeit eine Seite in Redaxo 4.1.0. gemacht.
Da ich hauptsächlich mit FF arbeite , trotzdem aber verschiedenste Versionen von IE zum testen verwende, bin ich erst neulich dahintergekommen das bei der Verwendung von IE8 seltsame Vorgänge in der Navigation (2 bzw. 3. Ebene) stattfinden.
Zum Beispiel hier:
http://www.bodeninfo.net/index.php?article_id=93

Verwendet man FF sieht die Seite genauso aus wie ich will, bei IE7 ebenfalls.
Benutzt man jedoch IE8 verschwinden die Links der 3. Naviebene, werden als 2.Ebene interpretiert und das was dann vormals 1. Ebene war, hat eine fehlerhafte Formatierung...

Der verwendete Navi-Code sieht so aus:
Code: Alles auswählen
<?php
// EXPLODE PATH
$PATH = explode("|",$this->getValue("path").$this->getValue("article_id")."|");

// GET CURRENTS
$path1 = (isset ($PATH[1])) ? $PATH[1] : '';
$path2 = (isset ($PATH[2])) ? $PATH[2] : '';
$path3 = (isset ($PATH[3])) ? $PATH[3] : '';
$sitePath = '';
$titlePath = '';
$navLeftCol = '';

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


         // START 2nd level categories
         foreach ($lev1->getChildren() as $lev2):
                  
            if ($lev2->isOnline()):
   
            // 2nd level - active link
               if ($lev2->getId() == $path2) {
                                                $navLeftCol .= '<li class="active"><a class="current" href="'.$lev2->getUrl().'">'.$lev2->getName().'</a>';
                  $sitePath .= ' &#8250;&#8250; <a href="'.$lev2->getUrl().'">'.$lev2->getName().'</a>';
                  $titlePath .= ' >> '.$lev2->getName();
               }
               // 2nd level - no active link
               else {
                  $navLeftCol .= '<li><a href="'.$lev2->getUrl().'">'.$lev2->getName().'</a></li>';
               }
               
             // 2st level had categories? -> go on
            $lev2Size = sizeof($lev2->getChildren());
   
            if ($lev2->getId() == $path2) {
            if ($lev2Size != "0"):
               $navLeftCol .= '<ul class="nav3rd">';
               //$navLeftCol .= '<li><strong>Unterkategorien2</strong></li>';
               
               // START 3nd level categories
               foreach ($lev2->getChildren() as $lev3):
                  
                  if ($lev3->isOnline()):
   
                  // 3nd level - active link
                      if ($lev3->getId() == $path3) {
                        $navLeftCol .= '<li><a href="'.$lev3->getUrl().'">'.$lev3->getName().'&nbsp;&nbsp;</a></li>';
                        $sitePath .= ' &#8250;&#8250; <a href="'.$lev3->getUrl().'">'.$lev3->getName().'&nbsp;&nbsp;</a>';
                        $titlePath .= ' >> '.$lev3->getName();
                     }
                     // 3nd level - no active link
                      else {
                        $navLeftCol .= '<li><a href="'.$lev3->getUrl().'">'.$lev3->getName().'&nbsp;&nbsp;</a>';
                     }
                     
                   endif;         
             $navLeftCol .= '</li>';
            endforeach;
                     $navLeftCol .= '</ul>';
             // END 3nd level categories            
            endif;
          $navLeftCol .= '</li>';               
            }
            // END 2nd level categories
           endif; // END by if ($lev1Size != "0"):              
        endforeach;
        //$navHeader .= '</li>'; 
    endif;
    if ($navLeftCol != "") $navLeftCol .= '</ul>';
     }
  endif; // END by if ($lev1->isOnline())
}
$navLeftCol .= '</li>';
$navLeftCol .= '</ul>';
$navLeftCol .= '</div>';
// END 1st level categories



if ($REX['CUR_CLANG'] == 1) $breadcrumb = 'Site: <a href="/index.php?clang=1">Startpage</a> '.$sitePath;
else $breadcrumb = 'Standort: <a href="/index.php">Startseite</a> '.$sitePath;

?>


Hat irgendjemand eine Idee wie ich das wieder sauber hinbekomme - bzw. hatte jemand schon sowas?
Grüße,
Robert
Maidenaustria
 
Beiträge: 254
Registriert: 7. Mär 2006, 09:43
Wohnort: Österreich

Re: Menüpunkte verschwinden bei IE8

Beitragvon Richard.Laing » 6. Mär 2011, 18:26

hi robert
da karneval und ich auch gleich wieder wech bin :)
erst mal
Code: Alles auswählen
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

damit geht der IE8 in den kompatibilitäts modus... und dann läuft es.
gruß richy
REXvideo Videotutorials für Redaxo www.REXvideo.de
Webseite www.on-laing.de smokezig.de www.smokezig.de
Benutzeravatar
Richard.Laing
 
Beiträge: 2109
Registriert: 27. Aug 2005, 23:55
Wohnort: Brühl / Rheinland

Re: Menüpunkte verschwinden bei IE8

Beitragvon Maidenaustria » 6. Mär 2011, 19:00

Ok - vielen Dank für deine prompte Antwort!

Die erste Gefahr ist mal gebannt, nach diesem "Hack" sind die Menüpunkte vorerst mal da, aber um einiges kleiner...
Sieht so aus als wär da noch etwas gröber faul - deinem "erst mal" entnehme ich das du da viell. nochmal später einen Blick drauf wirfst?!? :|
Maidenaustria
 
Beiträge: 254
Registriert: 7. Mär 2006, 09:43
Wohnort: Österreich

Re: Menüpunkte verschwinden bei IE8

Beitragvon Ingo » 7. Mär 2011, 13:15

Dein HTML ist fehlerhaft. Korrigier mal alle Fehler, die der http://validator.w3.org/ dir anzeigt, erst dann kann man dir sinnvolle Tips geben (falls es dann überhaupt noch nötig ist).
Ingo
 
Beiträge: 290
Registriert: 23. Jun 2010, 23:34

Re: Menüpunkte verschwinden bei IE8

Beitragvon Maidenaustria » 7. Mär 2011, 14:48

Hallo Ingo,
Ich weiß - das liegt daran, das im template der Navigation irgendwo ein Knoten mit <ul><li></li></ul> usw. ist, und genau DEN finde ich nicht...
Maidenaustria
 
Beiträge: 254
Registriert: 7. Mär 2006, 09:43
Wohnort: Österreich

Re: Menüpunkte verschwinden bei IE8

Beitragvon Ingo » 7. Mär 2011, 15:25

Zeile 15: $navLeftCol .= '<ul class="nav1st">';
Zeile 28: $navLeftCol .= '<ul><li><a href="'.$lev1->getUrl().'">'.$lev1->getName().'</a></li></ul>';

In Zeile 28 darf kein <ul> oder </ul> kommen.
Ingo
 
Beiträge: 290
Registriert: 23. Jun 2010, 23:34

Re: Menüpunkte verschwinden bei IE8

Beitragvon Maidenaustria » 7. Mär 2011, 16:02

Ok, das hab ich geändert, aber der IE8 kommt damit noch immer nicht zurecht *kopfkratz*
Maidenaustria
 
Beiträge: 254
Registriert: 7. Mär 2006, 09:43
Wohnort: Österreich

Re: Menüpunkte verschwinden bei IE8

Beitragvon Maidenaustria » 10. Mär 2011, 21:44

Update!
So, jetzt hab ich mir die valide Navigation aus dem DL-Bereich gekrallt und an meine Struktur angepasst - nun funktioniert die 3.Naviebene und ich benötige den IE7-Simulations Hack nicht mehr.

Jetzt trennen mich nur mehr einige li-tags von w3C-konformität ;)

So sieht's jetzt aus:
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];
$path4 = $PATH[4];
$path5 = $PATH[5];


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


         // START 2nd level categories
         foreach ($lev1->getChildren() as $lev2):
                  
            if ($lev2->isOnline()):
   
            // 2nd level - active link
               if ($lev2->getId() == $path2) {
                  $navLeftCol .= '<li class="active"><a class="current" href="'.$lev2->getUrl().'">'.$lev2->getName().'</a>';
                  $sitePath .= ' &#8250;&#8250; <a href="'.$lev2->getUrl().'">'.$lev2->getName().'</a>';
                  $titlePath .= ' >> '.$lev2->getName();
               }
               // 2nd level - no active link
               else {
                  $navLeftCol .= '<li><a href="'.$lev2->getUrl().'">'.$lev2->getName().'</a></li>';
               }
               
             // 2st level had categories? -> go on
            $lev2Size = sizeof($lev2->getChildren());
   
            if ($lev2->getId() == $path2) {
            if ($lev2Size != "0"):
               $navLeftCol .= '<ul class="nav3rd">';
               //$navLeftCol .= '<li><strong>Unterkategorien2</strong></li>';
               
               // START 3nd level categories
               foreach ($lev2->getChildren() as $lev3):
                  
                  if ($lev3->isOnline()):
   
                  // 3nd level - active link
                      if ($lev3->getId() == $path3) {
                        $navLeftCol .= '<li><a href="'.$lev3->getUrl().'">'.$lev3->getName().'&nbsp;&nbsp;</a></li>';
                        $sitePath .= ' &#8250;&#8250; <a href="'.$lev3->getUrl().'">'.$lev3->getName().'</a>';
                        $titlePath .= ' >> '.$lev3->getName();
                     }
                     // 3nd level - no active link
                      else {
                        $navLeftCol .= '<li><a href="'.$lev3->getUrl().'">'.$lev3->getName().'&nbsp;&nbsp;</a></li>';
                     }
                     
                   endif;         
             //$navLeftCol .= '</li>';
            endforeach;
            $navLeftCol .= '</ul>';
             // END 3nd level categories            
            endif;
           $navLeftCol .= '</li>';               
            }
            // END 2nd level categories
           endif; // END by if ($lev1Size != "0"):              
        endforeach;
        //$navHeader .= '</li>'; 
    endif;
    if ($navLeftCol != "") $navLeftCol .= '</ul>';
     }
  endif; // END by if ($lev1->isOnline())
}
$navLeftCol .= '</ul>';
$navLeftCol .= '</div>';

// END 1st level categories

if ($REX['CUR_CLANG'] == 1) $breadcrumb = 'You are here: <a href="/index.php?clang=1">Startpage</a> '.$sitePath;
else $breadcrumb = 'Sie sind hier: <a href="/index.php">Startseite</a> '.$sitePath;



?>
Maidenaustria
 
Beiträge: 254
Registriert: 7. Mär 2006, 09:43
Wohnort: Österreich


Zurück zu Templates/Navigationen [R4]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast