[TYPO3-german] Ausgehend von einer bestimmten Seite allePIDsbis zur Rootpage ermitteln

JCL - Johannes C. Laxander jc at laxander.com
Wed Aug 27 09:58:52 CEST 2008


> > Hallo Johannes du köntest ein zweites menü davor bauen. das dir den 
> > anderen part generiert!
> > ungefähr so:
> > 
> > lib.teaser.10.30 = COA
> > lib.teaser.10.30 {
> > 	10 = HMENU
> > 	10.special = rootline
> > 	10.special.value = 12
> > 	10.1 = TMENU
> > 	10.1.NO {
> > 		linkWrap = | >
> > 	}
> > 	20 < .10
> > 	20.special.value = 9
> > }
> > 
> > dann wird erst die rootline von id 12 aus generiert und 
> danach die von 
> > seite 9 angehängt.
> > 
> > gruss chris
> 
> 
> Hallo Chris,
> 
> da kann ich mal ausprobieren. Ich habe gerade noch mal in der 
> Doku die .special property nachgelesen, dort steht:
> "... Also be aware that this selects pages for the first 
> level in the menu.
> ..." Auch kann man mehrere die als Komma-separierte Liste 
> angeben. Das würde doch dann bedeuten, das ich einfach nur 
> alle PIDs sammeln müsste und die in .special.value angeben. 
> Damit würde mein erster Ansatz wieder teilweise greifen.
> 
> Ich werd' wohl etwas rumspielen müssen...

Hallo Chris,

dank deines Hinweises hab ich ne Teillösung gefunden :-) die sieht so aus:

temp.pidList = COA
temp.pidList {
	30 = COA
	30.1 = TEXT
	30.1.data = GPvar:bpid
	30.1.wrap = ,|
	20 = COA
	20.1 = RECORDS
	20.1 {
		source = {GPvar:bpid}
		source.insertData = 1
		tables = pages
		conf.pages = TEXT
		conf.pages.field = pid
	}
	20.wrap = ,|
	10 = COA
	10.1 = RECORDS
	10.1 {
		source.cObject < temp.pidList.20.1
		tables = pages
		conf.pages = TEXT
		conf.pages.field = pid
	}
}
lib.teaser.10.30 = COA
lib.teaser.10.30 {
	10 = HMENU
	10.special = list
	10.special.value.cObject < temp.pidList
	10.1 = TMENU
	10.1.NO {
		linkWrap = &nbsp;|&nbsp;&gt; |*| &nbsp;|&nbsp;&gt; |*|
&nbsp;|&nbsp;&gt;
	}
	20 < lib.teaser.10.20
}
lib.teaser.10.20 > 

Ich "sammle" die pid's ein und erstelle damit im COA temp.pidList eine
kommaseparierte Liste der relevanten Page-Ids. Ich starte mit der der
Seiten-Id der aufrufenden Seite, die ich als Parameter in der URL übergebe
(bpid), lese daraus die Seiten-ID der übergeordneten Seite (pid), lese damit
wieder den entsprechenden Page-Record und entnehme wieder die PID. Das mache
ich im oben gezeigten Code für max drei Hierarchie-Ebenen.

Mit der so erstellten Liste der relvanten Seiten-Ids kann ich dann das Menü
generieren.

Bei dieser Lösung gibt es jetzt aber zwei neue Probleme:

1. scheint es ein CACHE-Problem zu geben, denn wenn ich einmal ein
Reiseangebot im Pfad "Reiseziele > Asien > Indien > Reise" angezeigt habe,
und im nächsten Versuch das gleiche Reiseangebot über den Pfad "Reiseziele >
Asien > Reise" anzeigen möchte, dann wird immer noch der Pfad aus dem ersten
Versuch angezeigt, also "Reiseziele > Asien > Indien > Reise".

2. lese ich in dieser Lösung immer 3 Ebenen, was dann zu einem Fehler führt,
wenn es weniger Ebenen sind, so wie im zweiten Versuch unter 1)

Anscheinend lässt sich diese Problemstellung mit TypoSCript-Mitteln nicht
bewältigen, jednefalls komme ich als Anfänger an meine Grenzen. Bliebe als
Ausweg noch eine eigene Funktion zu schreiben, nur da befinde ich mich aauf
einer neuen Baustelle, denn in PHP habe ich bisher noch nicht programmiert.

Gruß, Johannes.



More information about the TYPO3-german mailing list