joaopinto
Beiträge: 117
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: 682
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: 117
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: 682
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: 117
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: 682
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: 117
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: 682
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

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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste