Ich bin heute über einen interessanten Ansatz gestoßen, der eigentlich alle zufrieden stellen müsste. Ich bin mir auch sicher, dass er geht... Ich hab aber nur die halbe Lösung und bräuchte bitte nochmal euer Wissen:
Um den CUR-Zustand des Menüs mit TYPO3-Mitteln auszutricksen, kann man die Einstellung 'HMENU.alwaysActivePIDlist' verwenden. Ich kann schonmal mit einer if-Abfrage auslesen, ob es die Variablen $_GET['tx_ttnews']['tt_news'] und $_GET['tx_ttnews']['backPid'] gibt. Wenn ja, dann schaue ich gerade die SINGLE-Ansicht einer News an. In diesem Fall muss
HMENU.alwaysActivePIDlist = $_GET['tx_ttnews']['backPid']
gesetzt werden... zumindest veranschaulicht. Die 'backPid' kann ich mir so ausgeben lassen:
10 = TEXT
10 {
data = GPvar:tx_ttnews|backPid
if {
isTrue.data = GPvar:tx_ttnews|tt_news
isTrue.data = GPvar:tx_ttnews|backPid
}
}
Mein Problem: Wie kriege ich den Wert von '10' (also die ausgelesene 'backPid') nun nicht als 'TEXT', sondern in die Einstellung 'HMENU.alwaysActivePIDlist' übertragen? Die if-Abfrage müsste ich ja eigentlich auf 'HMENU.alwaysActivePIDlist' legen, aber mein Wissen schweigt sich dazu aus #paralyzed#
Ich habe auch probiert:
MENU = HMENU
MENU {
# is used to fake the HMENU's CUR-status on tt_news SINGLE view
alwaysActivePIDlist >
alwaysActivePIDlist.data = GPvar:tx_ttnews|backPid
alwaysActivePIDlist.if {
isTrue.data = GPvar:tx_ttnews|tt_news
isTrue.data = GPvar:tx_ttnews|backPid
}
Ging natürlich nicht. Wenn ich statisch einfach die (mir ja bekannte) 'backPid' reinschreibe, also so: MENU.alwaysActivePIDlist = 2, dann klappt das. Dann behält der Menüpunkt tatsächlich seinen CUR-Status.
Nun möchte ich das Ganze aber nicht statisch, v.a. weil sich die 'backPids' manchmal unterscheiden.
Was auch noch verbesserungswürdig ist: Wenn nun jemand schon die Einstellung 'alwaysActivePIDlist' verwendet, dann dürfen die darin gespeicherten Werte ja nicht einfach überschrieben werden. Die 'backPid' muss in diesem Fall einfach nur hinten ran gehängt werden. Das wäre dann das Nonplusultra, spielt bei mir jetzt aber nicht die übergeordnete Rolle.
Wer hat eine grandiose Idee?