Seltsam... ich möchte, dass ein bestimmter Menüpunkt immer aufgeklappt ist. Den will ich aber dynamisch anhand einer $_GET-Variable bestimmen.
Das hier funktioniert, wenn ich http://mysite.tld/index.php aufrufe:
# CONSTANTS
foo = 2
# SETUP
temp.menu = HMENU
temp.menu.alwaysActivePIDlist = {$foo}
Und das hier nicht, wenn ich http://mysite.tld/index.php?foo=2 aufrufe:
# CONSTANTS
foo = {GPvar:foo}
# SETUP
temp.menu = HMENU
temp.menu.alwaysActivePIDlist = {$foo}
Die erste Konstante foo = 2 ist wohl ein Integer-Wert. Beim zweiten Versuch foo = {GPvar:foo} holt sich TYPO3 den Wert aus der Variable $_GET['foo']. Scheint für TYPO3 aber ein String zu sein. Das Menü bleibt zugeklappt. TYPO3 verlangt eigentlich einen String, den es intern (class.tslib_menu.php) anschließend am Komma zerhackt und in ein mit Integer-Werten gefülltes Array packt.
Wie krieg ich jetzt meine $_GET['2'] in temp.menu.alwaysActivePIDlist rein?
gibt es hier schon eine lösung?
Nein leider nicht. Nach über zwei Monaten der Lösungsversuche habe ich nun Kasper persönlich geschrieben... das kann zwar eine Weile dauern, weil er immer sehr beschäftigt ist, aber eine andere Chance sehe ich im Augenblick nicht.
Ich denke, ich hab nun schon echt alles probiert. Von eigenen PHP-Funktionen über haufenweise TypoScripts... ich möchte nur keine direkte Änderung im Quellcode vornehmen. Davon möchte ich langsam weg, da ich TYPO3 lieber erweitern möchte als es zu etwas zu zwingen. Damit versaut man sich u.U. auch die Möglichkeit, dasselbe Source-Paket für mehrere Dummy-Packages zu verwenden.
schreibst du dann hier rein wenn du lösung gefunden hast?
ich werde auch selber weiter versuchen.
mfg
Jo kann ich machen... WENN ich eine Antwort finde.
Ratet mal, warum die Dinger CONSTANTS heißen ;-)
Du kannst nicht Konstanten dynamisch zur Laufzeit, abhängig von POST oder GET - Variablen setzen lassen.
Das kannst Du allerdings mit Werten innerhalb des SETUP-Bereichs machen, mit einer UserFunction zum Beispiel.
Aber auch hier funktioniert eine Zuweisung in der Form my_var = GPvar:foo nicht !
Hallo jenses!
Und wie erklärt man sich dann das hier:
# CONSTANTS
foo = {GPvar:foo}
# SETUP
page = PAGE
page {
typeNum = 0
10 = TEXT
10.insertData = 1
10.value = {$foo}
}
http://my.domain.tld/foo=1
http://my.domain.tld/foo=2
http://my.domain.tld/foo=oh
http://my.domain.tld/foo=no
All diese URLs würden auf der Seite den Wert nach 'foo' anzeigen. Obwohl 'foo' eine Konstante ist, ändert sich 'page.10.value' dynamisch zur Laufzeit.
Deine Theorie wollte ich auch erst teilen. Daher dachte ich auch gleich an die Lösung im Setup mittels:
temp.menu = HMENU
temp.menu.alwaysActivePIDlist = {GPvar:foo}
oder
temp.menu = HMENU
temp.menu.alwaysActivePIDlist.data = GPvar:foo
oder
temp.menu = HMENU
temp.menu.alwaysActivePIDlist.insertData = 1
temp.menu.alwaysActivePIDlist.value = {GPvar:foo}
Ich hab noch so ein paar Dinger ausprobiert. Kann mir aber nicht erklären, weshalb sich 'foo' zwar dynamisch ändert (wie ich es brauche), aber das in der 'alwaysActivePIDlist' keinen Unterschied macht.
*bumb*
ich hoffe hier würden sich mehr interessieren. um eine saubere Lösng zu finden.
Mittlerweile ist alwaysActivePIDlist vom Typ stdWrap (TYPO3 3.0 und vielleicht schon früher?)
Leider wird das Menu trotz config.no_cache = 1 anscheinend gecached, sodass man die Auswirkung vom dynamischen füllen des alwaysActivePIDlist-Wertes erst nachdem löschen des Caches sieht.
Hat da vielleicht jemand eine Lösung, wie man das Problem behebt?