Zum Inhalt springen

additionalParams mit verschiedenen Bedingungen?

Erstellt am 9. Februar 2009 · 8 Antworten · letzte Antwort am 11. Februar 2009

Tags: Frage

Winddancer ·

Hallo zusammen,

ich benutze folgende Typoscript Passage, um PIVars in eine Navi einzubringen:

additionalParams = &tx_myextension[firstkey]={GPvar:tx_myextension|firstkey}
additionalParams {
insertData = 1
# only append if actually set
if.isTrue.data = GPvar:tx_myextension|firstkey
}

Das funktioniert auch soweit prima. Jetzt möchte ich allerdings eine zweite PIvar hinzufügen, die aber durch eine andere Bedingung aufgerufen werden soll. Nämlich nicht nur (wie im ersten Beispiel) ob sie gesetzt ist, sondern auch ob die erste pivar gesetzt ist und die zweite pivar gesetzt ist und nicht einem bestimmten Wert entspricht.

Ich kann das jetzt aber nicht einfach mit in den ersten Abschnitt packen (s.o.), da dies zwangsläufig meine "firstkey" Variable beeinflussen würde. Wenn ich den gleichen Absatz nochmal dazu schreiben würde, würde er mir meine firstkey Bedingung damit überschreiben.

Meine Frage: Kann ich es mit typoscript überhaupt bewerkstelligen, mehrere pivars mit unterschiedlichen Bedingungen zu generieren?

Und falls ja, wie sähe das aus?

Grüße

Sven

just2b ·

Hallo,

additionalParams.cObject = COA
additionalParams.cObject {
10 = TEXT
20 = TEXT
}

ich hoffe verstädnlich

georg

Winddancer ·

das hatte ich bereits ohne Erfolg versucht. Allerdings mag es sein, dass ich mir irgendwo einen Syntaxfehler reingehauen habe. Werde ich gleich nochmal testen. Vorerst danke.

Winddancer ·

Habe es gerade nochmal getestet, aber nach wie vor ohne Erfolg. Vielleicht habe ich aber auch nach wie vor einen Fehler drin. Ich bin mir auch garnicht sicher ob ich so einfach ein Content Object aus dem additionalParams machen kann.

Hier mein Setup wie es nicht funktioniert:

...
stdWrap.override.cObject {
  field = title
  typolink.parameter.field = uid
  typolink {
    useCacheHash = 1 
    
    additionalParams.cObject = COA
    additionalParams.cObject {
      
      10 = &tx_myextension[firstkey]={GPvar:tx_myextension|firstkey}
      10.insertData = 1
      10.if.isTrue.data = GPvar:tx_myextension|firstkey
      
      20 = &tx_myextension[scndkey]={GPvar:tx_myextension|scndkey}
      20.insertData = 1
      20.if.isTrue.data = GPvar:tx_myextension|scndkey
      
    }
...

Ist das so korrekt?

Unbekannter Benutzer ·

dir fehlt ein 10 = TEXT und 20 = TEXT

    additionalParams.cObject = COA
    additionalParams.cObject {
     
      10 = TEXT
      10 = &tx_myextension[firstkey]={GPvar:tx_myextension|firstkey}
      10.insertData = 1
      10.if.isTrue.data = GPvar:tx_myextension|firstkey
     
      20 = TEXT
      20 = &tx_myextension[scndkey]={GPvar:tx_myextension|scndkey}
      20.insertData = 1
      20.if.isTrue.data = GPvar:tx_myextension|scndkey
     
    }
just2b ·

Hallo,

und ganz korrekt heißts

      10 = TEXT
      10.value = &tx_myextension[firstkey]={GPvar:tx_myextension|firstkey}

georg

Winddancer ·

Wunderbar! So funktioniert das schonmal prima. Hatte wirklich die TEXT Definitionen vergessen. #angry#

Jetzt habe ich aber gleich die nächste Frage: Ich möchte für 20 mehrere if Bedingungen stellen.

Nämlich wie so etwas:

20.if.isTrue.data = GPvar:tx_myextension|scndkey && GPvar:tx_myextension|firstkey

Und dann soll auch noch geprüft werden, dass der scndkey nicht einem bestimmten Wert entspricht. Was in etwa so aussehen müsste:

20.if.isTrue.value.data = GPvar:tx_myextension|scndkey
20.if.isTrue.equals = forbidden_value
20.if.isTrue.negate = 1

Eine Idee?

just2b ·

Hallo,

häng eine userfunc rein und mach das ganze via php. Ich mag TYPO3 wirklich gern, aber zumindest jetzt gerade hab ich nicht den Nerv für was was anders schneller geht, sry

georg