[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REX DEMO von Peter Bickel - "Navigation - weitere Ebenen" - REDAXO Forum
Hallo,

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 und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme 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: https://redaxo.org/slack/
Ron
Beiträge: 68
Registriert: 24. Mär 2007, 12:17

REX DEMO von Peter Bickel - "Navigation - weitere Ebenen"

13. Jun 2016, 17:56

Hallo Herr Bickel,

Ich habe eine Frage, bei der Sie mir eventuell mit einem schnellen Tipp weiterhelfen können:

Navigation - Ebenentiefe der Kategorien:
Ich benötige noch mindestens eine weitere Kategorietiefe.
Aktuell sind nur 2 Ebenen in der Menüleiste anzeigbar.
Wo und wie kann ich diese 3. Ebenentiefe (oder auch noch 4. Ebene) festlegen.

Vielen Dank schon mal für einen Tipp :-)
und schöne Grüße
Ron
Gruß Ron

Benutzeravatar
Peter.Bickel
Beiträge: 1856
Registriert: 25. Jan 2005, 21:17
Wohnort: Schleswig-Holstein
Kontaktdaten: Website

Re: REX DEMO von Peter Bickel - "Navigation - weitere Ebenen

13. Jun 2016, 21:12

In der Demo kommen zwei verschiedene Navigationen vor: eine über die rex_navigation::factory erzeugte (in der Seitenspalte) und eine manuelle (in der Hauptnavigation). Man könnte beide auch jeweils andersherum erzeugen, ich wollte halt beide Wege zeigen.

Die manuelle ist etwas komplexer anzulegen, aber sie erlaubt volle Kontrolle über den Output.
Wenn Du das Prinzip ein wenig studierst, sollte es Dir möglich sein, eine weitere Ebene einzufügen, man muss nur kopieren und einfügen und der Logik der ersten beiden Ebenen folgen.

Hier ein Beispiel für vier Ebenen (falls gleich jemand fragt, wie das dann mit vier Ebenen geht).
Falls Du das direkt so in die Demo einsetzt, musst Du noch die CSS-Klassen anpassen, das ist hier ein allgemeines Beispiel.

Code: Alles auswählen

<?php
$path = explode("|",$this->getValue("path").$this->getValue("article_id")."|");
$path1 = ((!empty($path[1])) ? $path[1] : '');
$path2 = ((!empty($path[2])) ? $path[2] : '');
$path3 = ((!empty($path[3])) ? $path[3] : '');

$nav_main = '';

foreach (rex_category::getRootCategories() as $lev1) {

	$hidden_ids = array(1,6);
	// Home und Footer-Hilfsartikel sollen nicht in der Navi auftauchen

	if ($lev1->isOnline(true) && (!in_array($lev1->getId(), $hidden_ids))) {

		if ($lev1->getId() == $path1) {
			$nav_main .= '
			<li class="active"><a href="'.$lev1->getUrl().'">'.htmlspecialchars($lev1->getValue('name')).'</a>';
		} else {
   			$nav_main .= '
			<li><a href="'.$lev1->getUrl().'">'.htmlspecialchars($lev1->getValue('name')).'</a>';
		}

		// 2nd level start
		$lev1Size = sizeof($lev1->getChildren());

		// uncomment if you only want sublevels of active lavel
		// if ($lev1->getId() == $path1) {

			if ($lev1Size != "0") {

				$nav_main .= '
				<ul>';

					// START 2nd level categories
					foreach ($lev1->getChildren() as $lev2):
						if ($lev2->isOnline(true)) {

							if ($lev2->getId() == $path2) {
								$nav_main .= '
								<li class="active"><a href="'.$lev2->getUrl().'">'.htmlspecialchars($lev2->getValue('name')).'</a>';
							} else {
								$nav_main .= '
								<li><a href="'.$lev2->getUrl().'">'.htmlspecialchars($lev2->getValue('name')).'</a>';
							}

							// 3rd level start
							$lev2Size = sizeof($lev2->getChildren());
							// uncomment if you only want sublevels of active lavel
							// if ($lev2->getId() == $path2) {

								if ($lev2Size != "0") {

									$nav_main .= '
									<ul>';

										// START 3rd level categories
										foreach ($lev2->getChildren() as $lev3):
											if ($lev3->isOnline(true)) {

												// uncomment if want only sublevels of active lavel
												if ($lev3->getId() == $path3) {
													$nav_main .= '
													<li class="active"><a href="'.$lev3->getUrl().'">'.htmlspecialchars($lev3->getValue('name')).'</a>';
												} else {
													$nav_main .= '
													<li><a href="'.$lev3->getUrl().'">'.htmlspecialchars($lev3->getValue('name')).'</a>';
												}

												$nav_main .= '
												</li>';

											}
										endforeach;

									$nav_main .= '
									</ul>';

								}

							// uncomment if you only want sublevels of active lavel
							// }
							// 3rd level end

							$nav_main .= '
							</li>';

						}
					endforeach;

				$nav_main .= '
				</ul>';

			}

		// uncomment if you only want sublevels of active lavel
		// }
		// 2nd level end

		$nav_main .= '
		</li>';
	}
}

echo '
<ul>
		'.$nav_main.'
</ul>';
?>

Zurück zu „Allgemeines [R5]“