[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • 3 unabhängige Navigationen
Seite 1 von 1

3 unabhängige Navigationen

Verfasst: 26. Aug 2010, 14:12
von Fokus
Hallo Leute,
zuerst mal ein großes Kompliment an die Macher und Mitarbeiter von Redaxo.
Tolles CMS und eine sehr freundliche Community!

Habe folgendes Problem.
Brauche für eine Webseite 3 unabhängige Navigationen, unterschiedlich formatiert. Ich habe zwar im Forum schon Ähnliches gelesen, aber noch keine wirkliche Lösung gefunden. Man kann das wohl am besten über MetaInfos realisieren. Damit bin aber kaum vertraut. Verwende Redaxo 4.31.
Kann mir jemand weiterhelfen?

Danke und Grüße!
Christoph

Verfasst: 26. Aug 2010, 15:41
von 69waterproof
Hallo

Ist es das was du brauchst?

Code: Alles auswählen

<?php
$objNav = rex_navigation::factory();
$intCatId = 5;
$intDepth = 3;
$blnOpen = true;
$blnIgnoreOfflines = true;
echo '<div class=navistyle1>' . $objNav->get($intCatId, $intDepth, $blnOpen, $blnIgnoreOfflines) . '</div>';
?>
Dieser Code gibt das Menu (3 Stufen tief) der Kategorie 5 aus. Das kannst du nun für alle drei Kategorien machen, zum Beispiel mit unterschiedlichen CSS-Klassen.

Gruss
Adrian

Verfasst: 26. Aug 2010, 17:02
von Fokus
Hallo Adrian,
danke für die schnelle Antwort.

Es ist nicht das, was ich brauche/suche. Vielleicht fehlen auch noch ein paar Infos meinerseite.
Mit 3 unabhängigen Navis meine ich, das z.B. die Kategorien 1-5 (1=Home-5=Kontakt) als Navigation Oben, die Kategorien 6-10 (6=Hotel-10=Hochzeit) als Navigation Links, die Kategorien 11-15 (11=Buchung-15=Wetter) als Navigation Rechts ausgegeben werden. Es werden keine Subnavis gebraucht, alle Kategorien auf gleicher Ebene.
Vielleich habe ich auch einen groben Denkfehler drin und es ist doch einfacher zu lösen.

Grüße
Christoph

Verfasst: 26. Aug 2010, 17:13
von 69waterproof
Spannend.
Ich sehe im Moment nicht, wie bei mit der Klasse rex_navigation einzelne Kategorien separiert werden könnten.

Mögliche Lösung: Pack die zusammen gehörenden Kateogorien in jeweils eine Oberkategorie und gib die Menus mit dem oben erwähnten Code aus.

Gruss
Adrian

Verfasst: 26. Aug 2010, 17:17
von Fokus
Hi,

ok. werd ich versuchen.
Danke dir,
Christoph

Verfasst: 3. Sep 2010, 23:45
von gupi
Versuchs mal damit:

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 
  $nav1 .=  '<ul class="nav1">';
  $nav2 .=  '<ul class="nav2">';
  $nav3 .=  '<ul class="nav3">';
  $counter = 0;
  $boundery = 4;
  $step = 1;
  foreach (OOCategory::getRootCategories() as $lev1) {
    $counter++;
    if ($counter > $boundery) {
      $step++;
      $counter = 1;
    }
    switch ($step) {
      case 1:
      $navHeader = &$nav1;
      break;
      case 2:
      $navHeader = &$nav2;
      break;
      default:
      $navHeader = &$nav3;
    }
    if ($lev1->isOnline()){
      if ($lev1->getId() == $path1) {
        $navHeader .=  '<li class="active"><a class="current"  href="'.$lev1->getUrl().'">'.$lev1->getName().'</a></li>';
      }
      // 2nd level - no active link
      else {
        $navHeader .= '<li><a href="'.$lev1->getUrl().'">'.$lev1->getName().'</a></li>';
      }
      // 1st level had categories? -> go on
      $lev1Size = sizeof($lev1->getChildren());
      if ($lev1Size != "0"){
        // START 2nd level categories
        $navHeader .= '<ul class="nav'.$step.'_2">';
        foreach ($lev1->getChildren() as $lev2){
          if ($lev2->isOnline()){
          // 2nd level - active link
            if ($lev2->getId() == $path2) {
              $navHeader .= '<li class="active"><a class="current" href="'.$lev2->getUrl().'">'.$lev2->getName().'</a></li>';
            }
            // 2nd level - no active link
            else {
              $navHeader .= '<li><a href="'.$lev2->getUrl().'">'.$lev2->getName().'</a></li>';
            }
            // 2st level had categories? -> go on
            $lev2Size = sizeof($lev2->getChildren());
            if ($lev2Size != "0"){
              $navHeader .= '<ul class="nav'.$step.'_3">';
              foreach ($lev2->getChildren() as $lev3){
                if ($lev3->isOnline()){
                // 3rd level - active link
                  if ($lev3->getId() == $path3) {
                    $navHeader .= '<li class="active"><a class="current" href="'.$lev3->getUrl().'">'.$lev3->getName().'</a></li>';
                  }
                  // 3nd level - no active link
                  else {
                    $navHeader .= '<li><a href="'.$lev3->getUrl().'">'.$lev3->getName().'</a></li>';
                  }
                }
              }
              $navHeader .= "</ul>";
            } // END 3nd level categories
          }
        }
        $navHeader .= '</ul>';
      } // END 2nd level categories
    } 
    else {
      $counter--;
    }
  }
  $nav1 .= '</ul>';
  $nav2 .= '</ul>';
  $nav3 .= '</ul>';
  echo $nav1;
  echo $nav2;
  echo $nav3;
?>
Testhinweis:
Mach daraus ein Template, weis dieses einer Seite zu und ruf diese dann auf.

Mit der Variablen $boundery legst du die Anzahl der Menüeintäge pro Menü fest.

Viel Spass damit
Gunter

Verfasst: 4. Sep 2010, 17:07
von Fokus
hallo Gunter,

interessant, werd ich mal austesten.
Mein Problem der 3 Navis ist aber schon über Metadaten gelöst.

Trotzdem vielen Dank.
Christoph

Verfasst: 9. Sep 2010, 18:00
von fetuline
Fokus hat geschrieben:Mein Problem der 3 Navis ist aber schon über Metadaten gelöst.
Kannst du mir verraten wie du das genau gemacht hast? Ich brauch 2 Navis und kann mit rex_navigation immer nur ab catID = 0 darstellen. Bei allen anderen wird nichts angezeigt. :cry:

Verfasst: 10. Sep 2010, 11:36
von Richard.Laing
kinder kategorien kannst du so darstellen...

hauptnavi:

Code: Alles auswählen

<?php $rexnav = rex_navigation::factory(); echo $rexnav->get(0,1,FALSE,TRUE); ?>

Kinder der Kategorien:

Code: Alles auswählen

<?php $P = explode("|",$this->getValue("path").$this->getValue("article_id")."|"); $rexnav = rex_navigation::factory(); echo $rexnav->get($P[1],3,TRUE,TRUE); ?>

Rootartikel:

Code: Alles auswählen

<?php $articles = OOArticle::getRootArticles(true);
		$root_nav = '<ul>';
		foreach($articles as $article) {
		if ($this->getValue('article_id') == $article->getId())
		$root_nav .= '<li><a class="active" href="'.$article->getUrl().'">'.$article->getName().'</a></li>';
		else
		$root_nav .= '<li><a href="'.$article->getUrl().'">'.$article->getName().'</a></li>';
		}
		$root_nav .= '</ul>';
		print $root_nav;
?>
und hier noch ein tutorial dazu ;)
http://www.rexvideo.de/tutorials-redaxo ... ctory.html

gruß richy

Verfasst: 10. Sep 2010, 13:20
von fetuline
Jau, das hilft, DANKE! :D