Zum Inhalt springen

"source.data" dynamisieren?

Erstellt am 18. Februar 2012 · 2 Antworten · letzte Antwort am 17. März 2012

Tags: Frage

ra.​s ·

Hi zusammen,

ich stehe vor folgendem Problem:
In einem recht umfangreichen Formular werden Textblöcke bestimmter Kategorien zur Auswahl angezeigt. Die Kategorien werden im Backend als Seiten angelegt, die passenden Textblöcke als Inhaltselemente dieser Seiten. Das Formular liefert je eine kommaseparierte Liste der UIDs der gewählten Elemente einer Kategorie in einer Postvariable. Der Variablenname besteht zum Teil aus der Seiten UID. In diesem Fall "selectedPhrases101" bis "selectedPhrases120".

Daher meine Frage:
Gibt es eine Möglichkeit source.data so zu modifizieren, das ich einen dynamischen Wert erhalte?
Der unten stehende TS-Code geht ja leider nicht.

Seitenbaum:
100
|_ 101
|_ ...
|_ ...
|_ 120

10 = CONTENT
10 {
  table = pages
  select.pidInList = 100
  renderObj {
    10 = TEXT
    10.field = title
    10.wrap = <h2>|</h2>
    20 = RECORDS
    20 {
      wrap = <p>|</p>
      tables = tt_content
      ### Von hier ...
      source.data.cObject = TEXT
      source.data.cObject {
        insertData = 1
        value = GPvar:selectedPhrases{field:uid}
      }
      ### ... bis hier suche ich eine Lösung
      ### source.data.stdWrap.cObject = TEXT liefert leider auch kein Ergebnis
      conf.tt_content = TEXT
      conf.tt_content.field = header
      conf.tt_content.noTrimWrap = || |
    }
  }
}
PPinkel ·

Hast du schon eine Lösung gefunden? Ich habe ziemlich genau dasselbe Problem und komme einfach nicht weiter.
Grüße

zue ·

Wenn ich es richtig verstanden habe, besteht der Vorgang aus zwei Schritten:
1. Mit der uid der Seite den Variablennamen vervollständigen
2. Diesen Variablennamen interpretieren, so dass Du den Inhalt erhältst (UID Liste 1,2,3 ...)

Also muss das Ganze auch in zwei separaten Schritten abgearbeitet werden. Extrem wichtig ist hier die Reihenfolge wie stdWrap Funktionen ausführt. Siehe TSref > stdWrap

Meine Lösung ist:

source.data.cObject = TEXT
source.data.cObject {
    value = GPvar:selectedPhrases{field:uid}
    ## insertData wird eigentlich erst ganz am Ende ausgeführt
    ## mit stdWrap gleich am Anfang
    ## Inhalt ist danach z.B. GPvar:selectedPhrases101
    stdWrap.insertData = 1

    ### wrappen mit geschweiften Klammern
    ### Inhalt ist danach {GPvar:selectedPhrases101}
    wrap = {|}

    ### Und zum Schluß insertData, dann hat man den Wert 
    ### aus dem dynamischen Variablennamen
    insertData = 1
}

Passt das?