Hallo, lieber Forumbenutzer. Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen Möglichkeiten der Kommunikation ist das Forum ein wenig eingeschlafen und weniger Nutzer benutzen das Forum aktiv (trotzdem lohnt es sich evtl. hier nach Lösungen zu suchen oder seine Frage zu stellen).

Wir empfehlen, für deine Fragen/Probleme aktuell (zusätzlich) Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: http://redaxo.org/slack/
Fanello
Beiträge: 336
Registriert: 24. Mai 2006, 14:01
Wohnort: Riedt (Schweiz)

[gelöst] Bootstrap-Navi einer bestimmten Kategorie

25. Aug 2016, 10:58

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!
Zuletzt geändert von Fanello am 25. Aug 2016, 14:54, insgesamt 1-mal geändert.

Fanello
Beiträge: 336
Registriert: 24. Mai 2006, 14:01
Wohnort: Riedt (Schweiz)

Re: Bootstrap-Navi einer bestimmten Kategorie

25. Aug 2016, 11:54

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.

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

Re: Bootstrap-Navi einer bestimmten Kategorie

25. Aug 2016, 12:52

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

Fanello
Beiträge: 336
Registriert: 24. Mai 2006, 14:01
Wohnort: Riedt (Schweiz)

Re: Bootstrap-Navi einer bestimmten Kategorie

25. Aug 2016, 14:53

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 :)

beyben
Beiträge: 366
Registriert: 30. Nov 2006, 14:04

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

31. Mär 2017, 16:03

na hi & auch danke von mir - ich habe gesucht wie bloed, aber eine neue geschichte fuer getCategoriesById habe ich erst hier gefunden...
ben

Zurück zu „Templates/Navigationen [R5]“