Zum Inhalt springen

Hauptnavigation aus Seitenbaum und Datensätzen erstellen

Erstellt am 20. September 2011 · 3 Antworten · letzte Antwort am 21. September 2011

Tags: Frage

Unbekannter Benutzer ·

Hallo zusammen,

in meinem Seitenbaum gibt es eine Seite mit dem Namen Projekte. Dort ist eine Extension eingebunden mit der die Projekte und Projektkategorien gepflegt werden. Nun möchte ich, dass die Projektkategorien als Sub-Menüpunkte angezeigt werden, wenn der Navigationspunkt Projekte aktiv ist. Als wären es normale Seiten unterhalb der Seite Projekte.

Quasi so:

- Startseite
- Referenzen
--- Referenzen Unterseite 01
--- Referenzen Unterseite 02
- Projekte
--- Projekt 01
--- Projekt 02
--- Projekt 03
- Kontakt
- Impressum

grün = Normale Seiten
rot = Datensätze aus Ordner

Ich habe schon eine userfunction geschrieben welche mir das passende Array zurückgibt nur wie bekomme ich den normalen Seitenbaum und die userfunction vereint?

Gibt es diese Möglichkeit überhaupt oder muss ich die komplette Navigation über eine userfunction erstellen?

Danke und Gruß,
Lukas

Julian.​Hofmann ·

Hallo Lukas.

Innerhalb der TMENUITEMs stehen Dir zahlreiche Eigenschaften mit stdWrap-Eigenschaften zur Verfügung. Diese kannst Du nutzen, um den Menüpunkt bzw. dessen normales Verhalten zu überschreiben, falls eine bestimmte Seite (die Projekt-Oberseite) aufgerufen ist.
Es sollte funktionieren mit passender Kombination aus override.if.equals und der userFunction. Evtl. statt override mit append - müsst ich mir auch genauer anschauen.

Viele Grüße
Julian

Unbekannter Benutzer ·

Danke Julian, einen Schritt weiter bin ich schon gekommen.

marks.MAIN_NAVIGATION = HMENU
marks.MAIN_NAVIGATION {	
	wrap = <ul id="main-navigation">|</ul>
		
	1 = TMENU
	1 {
		expAll = 1
		NO.subst_elementUid = 1
		NO.stdWrap.wrap = | (id: {elementUid})
		NO.wrapItemAndSub = <li>|</li>
	}
		
	2 = TMENU
	2 {
		wrap = <ul class="sub">|</ul>
			
		stdWrap.prepend = CASE
		stdWrap.prepend {
			key.field = pid
				
			default = TEXT
			default.value = <div style="border: 1px solid #ff00ff;" class="clearfix">
				
			3 = TEXT
			3.value = <div style="border: 1px solid #ffff00;" class="clearfix">
				
		}
		stdWrap.append = </div>
			
		NO.wrapItemAndSub = <li>|</li>
	}
}

Über die pid konnte ich den gewünschten Navigationspunkt identifizieren. Als Test habe ich einen farbigen Wrap eingesetzt, funktioniert wunderbar.

Nur muss ich die Abfrage ja noch höher ansetzen. Eigentlich noch über

2 = TMENU

denn dort müsste ich ja dann ein weiteres HEMNU mit einer userfunc einbinden.

Ich werkel mal weiter. Wenn jemand eine helfende Idee hat - ich bin dankbar.

Unbekannter Benutzer ·

Okay, ich glaube ich komme der Sache näher.
Mit folgendem Ts greife ich für jeden Menüpunkt die Datensätze aus dem Ordner ab:

marks.MAIN_NAVIGATION = HMENU
marks.MAIN_NAVIGATION {
	
	wrap = <ul id="main-navigation">|</ul>
		
	1 = TMENU
	1 {
		[...]
	}
		
	2 = TMENU
	2 {			
		itemArrayProcFunc = user_implementProjectsInNav->makeMenuArray
			
		wrap = <ul class="sub">|</ul>
		NO.wrapItemAndSub = <li>|</li>
	}		
		
}

Was ich jetzt eigentlich nur noch brauche ist eine Abfrage, die anhand der pid die Funktion itemArrayProcFunc aufruft oder eben nicht.

Oder habe ich einen Denkfehler?