Seite 1 von 1

[gelöst] Bootstrap-Navi einer bestimmten Kategorie

Verfasst: 25. Aug 2016, 10:58
von Fanello
Liebe Redaxo-Community

Ich habe folgende Navigation die ich als Template einbaue (in diesem Fall nur der Teil der die ul/li generiert):

Code: Alles auswählen

<?php
             $PATH = explode("|", $this -> getValue("path") . $this -> getValue("article_id") . "|");
             echo '<ul class="nav navbar-nav rechtsbuendig">';
             foreach (rex_category::getRootCategories() as $lev1) {

                if ($lev1 -> isOnline(true)) {

                   if ($lev1 -> getId() == $PATH[1]) {
                      if (count($lev1 -> getChildren()) > 0) {
                         echo '<li class="dropdown active"><a class="dropdown-toggle" data-toggle="dropdown"  href="' . $lev1 -> getUrl() . '" title="' . $lev1 -> getName() . '">' . $lev1 -> getName() . '</a>';
                      } else {
                         echo '<li class="active"><a href="' . $lev1 -> getUrl() . '" title="' . $lev1 -> getName() . '">' . $lev1 -> getName() . '</a>';
                      }
                   } else {
                      if (count($lev1 -> getChildren()) > 0) {
                         echo '<li class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown" href="' . $lev1 -> getUrl() . '" title="' . $lev1 -> getName() . '">' . $lev1 -> getName() . '</a>';
                      } else {
                         echo '<li><a href="' . $lev1 -> getUrl() . '" title="' . $lev1 -> getName() . '">' . $lev1 -> getName() . '</a>';
                      }
                   }

                }

                if (count($lev1 -> getChildren()) > 0) {
                   echo '<ul class="dropdown-menu sub1">';
                   foreach ($lev1->getChildren() as $lev2) {

                      if ($lev2 -> isOnline(true)) {

                         if ($lev2 -> getId() == $PATH[1]) {
                            $dropdownSub = "";
                            if (count($lev2 -> getChildren()) > 0)
                               $dropdownSub = "dropdown-submenu";
                            echo '<li class="active ' . $dropdownSub . '"><a tabindex="-1" href="' . $lev2 -> getUrl() . '" title="' . $lev2 -> getName() . '">';
                            echo $lev2 -> getName();
                            echo '</a>';
                            if (count($lev2 -> getChildren()) > 0) {
                               echo '<ul class="dropdown-menu">';
                               foreach ($lev2->getChildren() as $lev3) {
                                  if ($lev3 -> getId() == $PATH[2])
                                     echo '<li class="active"><a href="' . $lev3 -> getUrl() . '" title="' . $lev3 -> getName() . '">' . $lev3 -> getName() . '</a></li>';
                                  else
                                     echo '<li><a href="' . $lev3 -> getUrl() . '" title="' . $lev3 -> getName() . '">' . $lev3 -> getName() . '</a></li>';
                               }
                               echo '</ul>';
                            }
                         } else {
                            $dropdownSub = "";
                            if (count($lev2 -> getChildren()) > 0)
                               $dropdownSub = "dropdown-submenu-2";
                            echo '<li class="' . $dropdownSub . '"><a tabindex="-1" href="' . $lev2 -> getUrl() . '" title="' . $lev2 -> getName() . '">';
                            echo $lev2 -> getName();
                            echo '</a>';
                            if (count($lev2 -> getChildren()) > 0) {
                               echo '<ul class="dropdown-menu sub2">';
                               foreach ($lev2->getChildren() as $lev3) {
                                  if ($lev3 -> getId() == $PATH[2])
                                     echo '<li class="active"><a href="' . $lev3 -> getUrl() . '" title="' . $lev3 -> getName() . '">' . $lev3 -> getName() . '</a></li>';
                                  else
                                     echo '<li><a href="' . $lev3 -> getUrl() . '" title="' . $lev3 -> getName() . '">' . $lev3 -> getName() . '</a></li>';
                               }
                               echo '</ul>';
                            }
                         }

                      }
                      if ($lev2 -> isOnline(true)) {echo '</li>';}
                   }
                   echo '</ul>';
                }
                if ($lev1 -> isOnline(true)) {echo '</li>';}
             }

             echo '</ul>';
          ?>
Ich hole jetzt nur mal die ersten paar Zeilen raus, weil ich denke dass ich da die Lösung einbauen muss

Code: Alles auswählen

             $PATH = explode("|", $this -> getValue("path") . $this -> getValue("article_id") . "|");
             echo '<ul class="nav navbar-nav rechtsbuendig">';
             foreach (rex_category::getRootCategories() as $lev1)
Diese Navigation zeigt alle Kategorien ab Root an, ich will aber dass sie nur für eine bestimmte Kategorie gilt. Ich setze sie also ein und will, dass sie z.B. die Unterkategorien der Kategorie ID 3 anzeigt.

Kann ich das irgendwie lösen?

Bedingung ist halt, dass ich diese Navigation verwende da ich die ganzen Bootstrap Klassen eingebaut habe.

Vielen Dank für eure Vorschläge!

Re: Bootstrap-Navi einer bestimmten Kategorie

Verfasst: 25. Aug 2016, 11:54
von Fanello
Ich habe es so versucht, aber da bring er mir im Frontend einen internal server error.

Code: Alles auswählen

foreach (rex_category::get(3) as $lev1) {
Es soll also ab Kategorie 3 die Unterkategorien anzeigen.

Re: Bootstrap-Navi einer bestimmten Kategorie

Verfasst: 25. Aug 2016, 12:52
von Thomas.Blum
Hej,

Code: Alles auswählen

rex_category::get(3)
bedeutet, dass die Objekt der Kategorie mit der Id 3 gegeben wird.

Wenn du die Kinder haben willst, musst du dies so notieren

Code: Alles auswählen

rex_category::get(3)->getChildren()
vg Thomas

Re: Bootstrap-Navi einer bestimmten Kategorie

Verfasst: 25. Aug 2016, 14:53
von Fanello
Hi Thomas

Vielen, vielen Dank - so funktioniert es!!!

Jetzt muss ich nur noch ein wenig am css rumschrauben, und dann sieht es auch so aus wie ich gerne hätte :)

Re: [gelöst] Bootstrap-Navi einer bestimmten Kategorie

Verfasst: 31. Mär 2017, 16:03
von beyben
na hi & auch danke von mir - ich habe gesucht wie bloed, aber eine neue geschichte fuer getCategoriesById habe ich erst hier gefunden...
ben