alwaysActivePIDlist frisst wohl keinen String?

  • droptix droptix
    Jedi-Meister
    0 x
    275 Beiträge
    0 Hilfreiche Beiträge
    01. 06. 2006, 14:58

    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:

    [TS]# CONSTANTS
    foo = 2

    # SETUP
    temp.menu = HMENU
    temp.menu.alwaysActivePIDlist = {$foo}[/TS]

    Und das hier nicht, wenn ich http://mysite.tld/index.php?foo=2 aufrufe:

    [TS]# CONSTANTS
    foo = {GPvar:foo}

    # SETUP
    temp.menu = HMENU
    temp.menu.alwaysActivePIDlist = {$foo}[/TS]

    Die erste Konstante [i]foo = 2[/i] ist wohl ein Integer-Wert. Beim zweiten Versuch [i]foo = {GPvar:foo}[/i] 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.

    [b]Wie krieg ich jetzt meine [i]$_GET['2'][/i] in [i]temp.menu.alwaysActivePIDlist[/i] rein?[/b]


  • 1
  • howdini howdini
    R2-D2
    0 x
    79 Beiträge
    0 Hilfreiche Beiträge
    02. 06. 2006, 15:22

    gibt es hier schon eine lösung?

  • droptix droptix
    Jedi-Meister
    0 x
    275 Beiträge
    0 Hilfreiche Beiträge
    03. 06. 2006, 10:25

    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.

  • howdini howdini
    R2-D2
    0 x
    79 Beiträge
    0 Hilfreiche Beiträge
    06. 06. 2006, 13:08

    schreibst du dann hier rein wenn du lösung gefunden hast?
    ich werde auch selber weiter versuchen.

    mfg

  • droptix droptix
    Jedi-Meister
    0 x
    275 Beiträge
    0 Hilfreiche Beiträge
    06. 06. 2006, 13:28

    Jo kann ich machen... WENN ich eine Antwort finde.

  • jenses jenses
    Flash Gordon
    0 x
    3087 Beiträge
    106 Hilfreiche Beiträge
    06. 06. 2006, 15:32

    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 !

  • droptix droptix
    Jedi-Meister
    0 x
    275 Beiträge
    0 Hilfreiche Beiträge
    06. 06. 2006, 15:43

    Hallo jenses!

    Und wie erklärt man sich dann das hier:

    [TS]# CONSTANTS
    foo = {GPvar:foo}

    # SETUP
    page = PAGE
    page {
    typeNum = 0
    10 = TEXT
    10.insertData = 1
    10.value = {$foo}
    }[/TS]

    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:

    [TS]temp.menu = HMENU
    temp.menu.alwaysActivePIDlist = {GPvar:foo}[/TS]

    oder

    [TS]temp.menu = HMENU
    temp.menu.alwaysActivePIDlist.data = GPvar:foo[/TS]

    oder

    [TS]temp.menu = HMENU
    temp.menu.alwaysActivePIDlist.insertData = 1
    temp.menu.alwaysActivePIDlist.value = {GPvar:foo}[/TS]

    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.

  • howdini howdini
    R2-D2
    0 x
    79 Beiträge
    0 Hilfreiche Beiträge
    12. 06. 2006, 10:50

    *bumb*
    ich hoffe hier würden sich mehr interessieren. um eine saubere Lösng zu finden.

  • nk36 nk36
    Padawan
    0 x
    42 Beiträge
    0 Hilfreiche Beiträge
    11. 12. 2009, 15:54

    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?

  • 1