2017-11-16 5 views
0

Ich möchte eine Variable (uid der Kategorie) passieren in Fluid zu einem TypoScript:Pass Fluid variabel TypoScript

<f:cObject typoscriptObjectPath="lib.testFluid" data="{setting.myvar}/> 

Dann möchte ich die var verwenden, um alle Inhaltselemente in Ordner mit pid 942 zu erhalten und die Kategorie {setting.myvar}

lib.testFluid = COA 
lib.testFluid = CONTENT 
lib.testFluid { 
table = tt_content 
    select { 
    pidInList = 942 
    where = selected_categories = | 

}

}

Dies funktioniert nicht, es c erzeugt einen MySql-Syntaxfehler. Ich habe auch versucht, current = 1 anstelle der Where-Klausel ohne Erfolg zu verwenden. Ich schaute auf Post TYPO3: pass variable to typoscript via cObject? und ich kann es neu erstellen, aber es funktioniert nicht mit meinem Skript. (TYPO3 8) Wenn i

verwenden
... 
    where = selected_categories = 13 
.... 

The Script wird erfolgreich alle CE Anzeige mit Kategorie 13. Wie kann ich es mit einem var funktioniert?

Antwort

0

ich es einmal mit Markern zu lösen hatte. Ich konnte keinen einfacheren Weg finden. Ich gebe Ihnen eine sehr allgemeine Lösung, die Sie an Ihre Bedürfnisse anpassen können. Zum Beispiel könnten Sie den pid-Wert über eine Typoscript-Einstellung festlegen, die eleganter ist, als sie in den Snippet-Code zu schreiben. Bitte versuchen Sie es:

<f:cObject typoscriptObjectPath="lib.testFluid" data="{category: setting.myvar, catPid: 942}" currrentValueKey="category" /> 

Die zugehörigen TypoScript-Snippet:

lib.testFluid = COA 
lib.testFluid { 
    10 = LOAD_REGISTER 
    10 { 
     category.cObject = TEXT 
     category.cObject.value.current = 1 
     catPid.cObject = TEXT 
     catPid.cObject.value.dataWrap = { field: catPid } 
    } 
    20 = CONTENT 
    20 { 
     table = tt_content 
     select { 
      pidInList.cObject = TEXT 
      pidInList.cObject.dataWrap = {REGISTER:catPid} 
      where = selected_categories=###category### 
      markers { 
       category.data = REGISTER:category 
      } 
     } 
    } 
    30 = RESTORE_REGISTER 
} 
+0

könnten Sie wahrscheinlich '' LOAD_REGISTER' 'vermeiden, wenn Sie '' cObject'' auf '' where' 'verwenden und einen korrekten Zeilenumbruch durchführen. –

+0

Danke das hat für mich funktioniert. – chicky

1

könnten Sie dies versuchen:

<f:cObject typoscriptObjectPath="lib.testFluid" data="{myvar: setting.myvar}/> 

lib.testFluid = CONTENT 
lib.testFluid { 
    table = tt_content 
    select { 
     pidInList = 942 
     where.data = field:myvar 
     where.intval = 1 
     where.wrap = selected_categories=| 
    } 
} 

schwer für mich zu testen, aber es könnte funktionieren ...

+0

Sie mehrere Werte verwenden können, wenn Sie mehr Werte in Ihrer Daten-Array hinzuzufügen. also könnte die Seite uid auch ein Parameter sein. –