Zum Inhalt springen

Spalteninhalt einzeln ausgeben

Erstellt am 13. September 2006 · 12 Antworten · letzte Antwort am 12. April 2007

Tags: Frage

George Mason ·

Hi,

Mit unten stehendem Code kann ich den gesamten Inhalt einer Spalte auf einmal ausgeben und umrahmen. Ich würde den Inhalt einer Spalte aber gerne Datensatz für Datensatz ausgeben und jeweils mit einem <div> versehen.

subparts.col2_content = CONTENT
  subparts.col2_content {
       wrap = <div class="infomaterial">|</div>
       table = tt_content
       select.orderBy = sorting
       select.where = colPos = 2
  }

Geht das überhaupt? Und wenn ja, wer kann mich mal in die richtige Richtung schubsen? Danke fürs Lesen!

George Mason ·
  subparts.col2_content = CONTENT
  subparts.col2_content {
#       wrap = <div class="infomaterial">|</div>
       tt_content.stdWrap.wrap = <div class="infomaterial">|</div>       
       table = tt_content
       select.orderBy = sorting
       select.where = colPos = 2
  }

Danke für die Antwort.
Leider klappt das so nicht. Jetzt wird gar nichts mehr gewrappt.

George Mason ·

Vielen Dank schonmal!
Ja, dann wrappt er jedes Contentelement, sogar in den anderen Spalten. Was ich gar nicht will. Aber, super, dass das schonmal klappt! Ich brauche eine Anweisung, die sich nur auf column 2 bezieht, deswegen habe ich den TS dazu gepostet.

Roger08 ·

Hallo,

ich muss auch gleich mal nachfragen - hab nämlich das gleiche Problem.
Entweder wird alles in der Spalte gewrapped oder garnichts.

Bei mir soll in der Spalte RECHTS von jedem Contentelement nur der bodytext ausgegeben werden und einzeln(!) mit <div> einen Rahmen erhalten.

       RECHTS = CONTENT
       RECHTS {
          table = tt_content
          select.where = colPos = 2
          select.orderBy = sorting

          renderObj=COA
          renderObj {
              10=TEXT
              10.field=bodytext
           }
        }
tt_content.stdWrap.wrap = <div class="infobox">|</div>

So wird jedenfalls kein Rahmen angezeigt.

@just2b / georg
Wo soll die letzte Zeile hin ?

@George Mason
Du hast den Thread wohl irrtümlich als "gelöst" gekennzeichnet !

Roland

George Mason ·

Habe ich das? Muss wohl...
Da haben wir ja fast das gleiche Problem. Ich probiere mal, Deinen und meinen Ansatz zu verbinden. Vielleicht bringt das ja etwas.

Roger08 ·

So, ich hab's geschafft !

      RECHTS = CONTENT
       RECHTS {
          table = tt_content
          select.where = colPos = 2
          select.orderBy = sorting

          renderObj=COA
#          renderObj < tt_content
          renderObj {
              10=TEXT
              10.field=bodytext
           }
           renderObj.stdWrap.wrap = <div class="infobox">|</div>
           renderObj.stdWrap.required = 1
       }

Das Script schreibt jedes einzelne Contentelement einer Spalte (2) nach RECHTS und wrapped es mit einem <div>.
Die auskommentierte Zeile entscheidet darüber, ob nur der bodytext oder auch der header mit ausgegeben werden soll.

Danke für eure Hilfen.

Roland

George Mason ·

bin noch immer am rotieren. Hier der Stand:

- mein ursprünglicher Code wrappt die gesamte rechte Spalte
- der Code von just2b wrappt verschiedene Elemente, auch in den falschen Spalten

vielen Dank für den Link, ich habe es mir mehrmals durchgelesen, und bin z.B, auf dies hier gestoßen:

subparts{
  RIGHT_CONTENT < styles.content.getRight
  RIGHT_CONTENT.renderObj.stdWrap.wrap = <div class="bordered">|</div>
}

was ich folgendermaßen eingebaut habe:

 subparts.col2_content {
   RIGHT_CONTENT < styles.content.getRight
   RIGHT_CONTENT.renderObj.stdWrap.wrap = <div class="infomaterial">|</div>
}

und die rechte Spalte wird gar nicht mehr angezeigt. Ich bin ja eigentlich nicht blöd, aber jetzt komm ich mir grad so vor. Vielen Dank jedenfalls für die bisherigen Versuche.

Edit: ich habe beim Suchen noch dies hier gefunden:

subparts.content.getRight = CONTENT
subparts.content.get {
  table = tt_content
  select.orderBy = sorting
  select.where = colPos=2
  renderObj < tt_content
  renderObj.stdWrap.wrap = <div id="infomaterial"> | </div>
}

subparts.COL2_CONTENT < temp.content.getRight

mit dem Ergebnis, dass die Spalte nicht mehr angezeigt wird. Aber es sieht doch ganz richtig aus, eigentlich. Wer kennt sich aus?

Edit: ich habe in diversen anderen Foren niemanden gefunden, der darauf eine brauchbare Antwort bekommen hätte, aber dafür viele User mit dem gleichen Problem. Meistens gehen die Antworten messerscharf an der Frage vorbei. Und viele wundern sich darüber, weil es doch eigentlich eine Standardfrage ist:

Wie wrappe ich einzelne Content-Elemente einer Spalte?

Beispiel: rechte Spalte, der Container heißt col2_content

George Mason ·
subparts.col2_content < styles.content.getRight
  subparts.col2_content.renderObj.stdWrap.wrap=<div class="hallo">|</div>

so geht's! Ihr müsst nur für "col2_content" den Namen des Containers eingeben, in dem der Spalteninhalt liegt.

susy2space ·

Ich arbeite mit TV....
die Rechte spalte ist ein enfaches Content Element in der DS.

im TypoScript Setup hab ich folgendes...

# Create COA with different maxW for right column
temp.rightContent = COA
temp.rightContent {
  10 = LOAD_REGISTER
  10.maxImageWidth = 150
  20 < styles.content.getRight
  21.stdWrap {
    wrap = <div id="right-main"> | </div>
    if.isTrue.numRows < styles.content.getRight
  }
  30 {
   	table = tt_content
   	select {
   	  pidInList = this
   	  orderBy = sorting
   	  where = colPos=2
        }
     renderObj < tt_content
     renderObj.stdWrap.wrap = <div class="featurebox">|</div>
     }
  40 = RESTORE_REGISTER
}
#use the one created above instead of styles.content.getRight
  lib.right < temp.rightContent
  lib.right.renderObj.stdWrap.wrap =  <div id="right-main"> | </div>

geht alles nicht...
und lib.right hab ich nirgends definiert ! Kann ich auch nicht, da die rechte Spalte ja ein Content Element vom Typ ist.

Was mache ich hier falsch.