Zum Inhalt springen

content mehrspaltig zeilenweise darstellen

Erstellt am 21. Dezember 2008 · 3 Antworten · letzte Antwort am 25. Dezember 2008

Tags: Templates & Layouts, Frage

McGregor ·

Guten Abend!

Ich bin auf der Suche nach einer Lösung für folgendes Problem:
Ich habe mehrere (hier 2) Spalten im Backend (z.B. Normal und Rechts)
Ich möchte die Inhalte aus diesen Spalten in einzelnen Zeilen darstellen, so daß für jeden Inhalt eine neue Zeile begonnen wird.
Hier ein Beispiel:

--------------------------------------------------------------
| Überschrift 1                  | Überschrift Rechts 1      |
| BLA BLUB                       | nur ein bissel Text       |
| FOO BAR                        |                           |
| UND SO WEITER                  |                           |
--------------------------------------------------------------
| Überschrift 2                  | Überschrift Rechts 2      |
|                                | jetzt mehr Text           |
|                                | noch ne Zeile             |
--------------------------------------------------------------
| Überschrift 3                  | Überschrift Rechts 3      |
| nur eine Zeile                 | jetzt mehr Text           |
|                                | noch ne Zeile             |
|                                | BLA                       |
|                                | BLUB                      |
|                                | FOO BAR                   |
--------------------------------------------------------------

Also, der größere Inhalt bestimmt die Zeilenhöhe.
Mit einer einfachen Tabelle in HTML ist das ja kein Problem, aber der Mechanismus von TYPO3 macht es mir sehr schwer.

Mein Template sieht ungefähr so aus:

<table>
 <tr>
  <td>###SPALTE1###</td>
  <td>###SPALTE2###</td>
 </tr>
</table>

oder auch so:

<div>###SPALTE1### ###SPALTE2###</div>

damit erreiche ich aber nichts, weil die Spalten unabhängig voneinander laufen, bzw. erst die linke, dann die rechte Spalte geschrieben werden.

Ich müsste per TS irgendwie das 1. Element der linken Spalte, dann das 1. Element der rechten Spalte, dann das 2. Element der linken ... auslesen (natürlich mit dynamischer Anzahl an Inhalten).
Dann könnte ich mir eine wunderbare Tabelle zusammenbasteln.
Oder geht das auch irgendwie mit CSS? Wie muss dann das Template aussehen?

Kann mir da jemand vielleicht unter die Arme greifen?
Danke schonmal und frohe Tage
McGregor

McGregor ·

Hi!

Das kannte ich noch nicht, löst jedoch mein Problem leider nicht.
Das Modul verhält sich ebenso wie der normale Inhalt, jedoch hat es den Vorteil, dass man dynamisch mehrere Spalten generieren kann.
Scheinbar komme ich nicht drum rum, meine eigene Extension zu basteln.

Grüße
McGregor

McGregor ·

Hi!

Das mit der eigenen Extension habe ich erstmal verworfen.
Ich bin zu folgender Lösung übergegangen. Da gibt es jedoch noch ein kleines Problem. Wenn in einer Spalte ein bestimmter Inhalt nicht vorhanden ist, soll kein Inhalt (auch kein wrap) ausgegeben werden. Ich habe das versucht mit der ifEmpty-Angabe. Leider funktioniert das so nicht.
2. Wenn eine Spalte mehr Inhalt enthält, als die andere, dann sollen leere Inhaltselemente in der anderen Spalte ausgegeben werden, damit ich eine valide Tabelle erhalte. Wie kann ich das erreichen, eine andere Spalte abzufragen und dementsprechend zu handeln?

Hier mein TS:

temp.linkespalte = CONTENT
temp.linkespalte {
 table = tt_content
 select.orderBy = sorting
 select.where = colPos = 0
 select.max = 1
 select.languageField = sys_language_uid
 stdWrap.wrap = <tr><td><!--TYPO3SEARCH_begin-->|<!--TYPO3SEARCH_end--></td>
 stdWrap.ifEmpty = 
}

temp.rechtespalte < temp.linkespalte
temp.rechtespalte.select.where = colPos = 2
temp.rechtespalte.stdWrap.wrap = <td><!--TYPO3SEARCH_begin-->|<!--TYPO3SEARCH_end--></td></tr>

temp.specialcontent = COA
temp.specialcontent {
 5 = TEXT
 5.value = <table cellpadding="10" cellspacing="0" border="1">

 10 < temp.linkespalte
 10.select.begin = 0
 
 20 < temp.rechtespalte
 20.select.begin = 0

 30 < temp.linkespalte
 30.select.begin = 1
 
 40 < temp.rechtespalte
 40.select.begin = 1

 50 < temp.linkespalte
 50.select.begin = 2
 
 60 < temp.rechtespalte
 60.select.begin = 2
 
 70 < temp.linkespalte
 70.select.begin = 3
 
 80 < temp.rechtespalte
 80.select.begin = 3

 90 < temp.linkespalte
 90.select.begin = 4
 
 100 < temp.rechtespalte
 100.select.begin = 4

 110 = TEXT
 110.value = </table>
}

page.10.marks.INHALT > 
page.10.marks.INHALT < temp.specialcontent

Grüße
McGregor