[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Demo-Navigation - Link von Elternelement bei Dropdown deaktivieren - 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/
joaopinto
Beiträge: 120
Registriert: 28. Jun 2006, 14:16
Wohnort: Österreich

Demo-Navigation - Link von Elternelement bei Dropdown deaktivieren

24. Nov 2017, 01:00

Hallo,
ich habe die Navigation der Demo im Einsatz und würde gerne das Elternelement der ersten Ebene ohne Verlinkung darstellen, so dass nur die jeweiligen Kindelemente (2. Ebene) im Dropdown verlinkt sind.

Besipiel aus der Redaxo-Demo:
Elternelement der 1. Ebene ADDONS //
Kindelemente der 2. Ebene EDITOREN l DEVELOPER l YFORM ...

In diesem Beispiel sollte "ADDONS" nicht verlinkt werden, da ich in dieser Kategorie keine passende allgemeine Seite verfüge. Der User soll nur (über das Dropdown) zu den Unterkategorieseiten (2. Ebene) gelangen.

Was muss ich im Code anpassen? Wäre ich mit

Code: Alles auswählen

if ($category->getChildren(true))
auf der richtigen Spur?

Demo-Navi:

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] : '');

$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="dropdown-toggle active"><a href="'.$lev1->getUrl().'">'.htmlspecialchars($lev1->getValue('name')).'</a>';
		} else {
   			$nav_main .= '
			<li class="dropdown-toggle"><a href="'.$lev1->getUrl().'">'.htmlspecialchars($lev1->getValue('name')).'</a>';
		}

		// 1st level start
		$lev1Size = sizeof($lev1->getChildren());

			if ($lev1Size != "0") {

				$nav_main .= '
				<ul class="dropdown-menu">';

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

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

				$nav_main .= '
				</ul>';

			}

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

echo '
<div class="navbar-collapse collapse navbar-right">
	<ul class="nav navbar-nav">
		'.$nav_main.'
		'.rex::getProperty('lang_switch').'
	</ul>
</div><!--/.nav-collapse -->';
?>
Vielen Dank im voraus ;-)

Benutzeravatar
anita
Beiträge: 711
Registriert: 25. Jan 2007, 10:25
Wohnort: Finsterwalde

Re: Demo-Navigation - Link von Elternelement bei Dropdown deaktivieren

24. Nov 2017, 17:21

hallo,

ich würde ganz einfachhier

Code: Alles auswählen

} else {
   			$nav_main .= '
			<li class="dropdown-toggle"><a href="'.$lev1->getUrl().'">'.htmlspecialchars($lev1->getValue('name')).'</a>';
		}
die Änderungen vornehmen, entweder href raus oder gleich a-Tag raus
Gruß Anita

javanita engineering, immer eine zündende Idee
http://www.javanita.com

joaopinto
Beiträge: 120
Registriert: 28. Jun 2006, 14:16
Wohnort: Österreich

Re: Demo-Navigation - Link von Elternelement bei Dropdown deaktivieren

26. Nov 2017, 20:14

Danke Anita für den Tipp,
aber wenn ich dort ansetze werden mir alle Links von Elementen der 1. Ebene deaktiviert, nicht nur jene mit Kindelementen (sprich Dropdown).
Sorry, das hatte ich zuvor nicht ausreichend klar formuliert:
Nur wenn das Navi-Element in der 1. Ebene Kindelemente hat, soll dieses als Link deaktiviert werden.
Ich vermute, dass ich hierfür noch eine if-Schleife einbauen muss, nur wo und wie... :wink:

Benutzeravatar
anita
Beiträge: 711
Registriert: 25. Jan 2007, 10:25
Wohnort: Finsterwalde

Re: Demo-Navigation - Link von Elternelement bei Dropdown deaktivieren

27. Nov 2017, 17:00

dann notierst Du in dieser else-Anweisung noch ein if else und als Bedingung, wenn Kindelement, dann mit <a> und else ohne <a>

dafür kannst Du $lev1Size nutzen, musst die abfrage nur weiter oben notieren
Gruß Anita

javanita engineering, immer eine zündende Idee
http://www.javanita.com

joaopinto
Beiträge: 120
Registriert: 28. Jun 2006, 14:16
Wohnort: Österreich

Re: Demo-Navigation - Link von Elternelement bei Dropdown deaktivieren

27. Nov 2017, 23:06

Ist das so sinngemäß richtig?
(funktionieren tut es bereits...)
Mit $lev1Size hab ich's nicht verstanden, ist mir zu hoch :wink: (bin ein PHP Noob)

Nachtrag: Gibt scheinbar doch noch ein Problem, wenn die Seite der betroffenen Kategorie aktiv ist (also das zutrifft: if ($lev1->getId() == $path1)),
fängt er wieder ganz oben an und verlinkt das Elternelement ....

Code: Alles auswählen

} else {
                        // Bedingung wenn Kindelemente
			if ($lev1->getChildren(true)) {
			        $nav_main .= '
			<li><a href="#" style="pointer-events:none;cursor:default;text-decoration:none;">'.htmlspecialchars($lev1->getValue('name')).'</a>';
			} else {
				$nav_main .= '
			<li><a href="'.$lev1->getUrl().'">'.htmlspecialchars($lev1->getValue('name')).'</a>';
			}	
		}

Benutzeravatar
anita
Beiträge: 711
Registriert: 25. Jan 2007, 10:25
Wohnort: Finsterwalde

Re: Demo-Navigation - Link von Elternelement bei Dropdown deaktivieren

28. Nov 2017, 16:31

hi,

jetzt hab ich's

Code: Alles auswählen

if(sizeof($lev1->getChildren()) != "0"){
           $profilelink = strip_tags($profilelink);
          
      }
Gruß Anita

javanita engineering, immer eine zündende Idee
http://www.javanita.com

joaopinto
Beiträge: 120
Registriert: 28. Jun 2006, 14:16
Wohnort: Österreich

Re: Demo-Navigation - Link von Elternelement bei Dropdown deaktivieren

29. Nov 2017, 10:59

Aber mit diesem Ansatz (strip_tags) nimmt er mir das komplette Elternelement in der Navigation raus ... dieses sollte schon noch bestehen bleiben, nur eben nicht verlinkt (wenn Kinder bzw. Dropdown).

Benutzeravatar
anita
Beiträge: 711
Registriert: 25. Jan 2007, 10:25
Wohnort: Finsterwalde

Re: Demo-Navigation - Link von Elternelement bei Dropdown deaktivieren

29. Nov 2017, 18:06

das versteh ich nicht, bei mir geht es, lediglich die styles müssen korrigiert werden
Gruß Anita

javanita engineering, immer eine zündende Idee
http://www.javanita.com

Thomas.Skerbis
Beiträge: 1371
Registriert: 4. Aug 2006, 14:06
Wohnort: Rheinberg
Kontaktdaten: Website Twitter

Re: Demo-Navigation - Link von Elternelement bei Dropdown deaktivieren

29. Dez 2017, 21:46

Hallo joaopinto , ich empfehle Dir nichts am Navi-Code zu ändern und stattdessen eine geeignete Rewrite scheme zu verwenden. https://github.com/FriendsOfREDAXO/yrewrite_scheme

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