Zum Inhalt springen

tt_content & optionSplit oder Alternative?

Erstellt am 17. Oktober 2010 · 7 Antworten · letzte Antwort am 20. Oktober 2010

Tags: Frage

Zwirni ·

Hi,

ich stehe bei der Umsetzung eines Layouts gerade vor einem aus meiner Sicht bisher nicht lösbaren Problem bzgl. tt_content und optionSplit.

Ziel ist folgender HTML-Code:

<table>
 <tr>
   <td>Inhalt links</td>
   <td>Inhalt rechts</td>
 </tr>
 <tr>
   <td>Inhalt links</td>
   <td>Inhalt rechts</td>
 </tr>
</table>

Die Redakteure sollen für "Inhalt links" die colPos 0 verwenden, für "Inhalt rechts" die colPos 2.

Meine Idee war jetzt:

INHALT_LINKS = CONTENT
      INHALT_LINKS {
        table = tt_content
        select.orderBy = sorting
        select.where = colPos = 0
    }
    INHALT_RECHTS = CONTENT
      INHALT_RECHTS {
        table = tt_content
        select.orderBy = sorting
        select.where = colPos = 2
    }

Nur kommt dabei ja der Inhalt von 0 und 2 nicht neben- sondern nacheinander - logisch, sind ja 2 Statements die nacheinander abgesetzt werden. Mit wrap kann ich da auch nicht arbeiten, da die Inhalte dann weiterhin nacheinander ausgegeben werden würde.
Die Alternative Wäre alle Inhalte von colPos 0 und 2 in einem Statement auszugeben. Nur bei .wrap von CONTENT funktioniert ja optionSplit wiederum nicht (wie ich aus vielen anderen Beiträgen weiß) weshalb ich in dem Fall nicht jeden zweiten Datensatz (colPos 2) mit anderen HTML-Codes versehen könnte.

Frage:
Wie kann ich o.g. Quellcode mit typo3 so erzeugen?

trainerth ·

Hi,

<table>
 <tr>
   <td>Inhalt links</td>
   <td>Inhalt rechts</td>
 </tr>
 <tr>
   <td>Inhalt links</td>
   <td>Inhalt rechts</td>
 </tr>
</table>

ist ja quatsch oder nicht? somit hast du zwei mal den gleichen inhalt untereinander...

<table>
 <tr>
   <td>Inhalt links</td>
   <td>Inhalt rechts</td>
 </tr>
</table>

Würd ich folgendermaßen umsetzen.

CONTENT_SPLTT = COA
CONTENT_SPITT {
10 = CONTENT
10 {
        table = tt_content
        select.orderBy = sorting
        select.where = colPos = 0
    }
10.wrap = <td></td>

20....

}
CONTENT_SPLITT.wrap = <tabele><tr></tr></table>

Aber das mit dem jeden zweiten datensatz ein anderer inhalt... kene ahnung, wenn das mal gehen mag dann ist das wohl nicht ohne

gruß

Zwirni ·

Hey, danke für deine Anregung. Nein, total Quatsch ist das nicht. Ich hätte es besser formulieren sollen:

<table>
 <tr>
   <td>erster Inhalt links</td>
   <td>erster Inhalt rechts</td>
 </tr>
 <tr>
   <td>zweiter Inhalt links</td>
   <td>zweiter Inhalt rechts</td>
 </tr>
</table>

Deine Idee teste ich morgen mal aus. Das mein Wunsch so gar nicht gehen soll erstaunt mich etwas, zumal ich das selbe Layout bereits in 2 anderen CMS problemlos umgesetzt habe 😐

trainerth ·

Ja gut das ist natürlich nun was anderes...
aber das das aus der geichen spalte gehen soll glaube ich nicht, hier wirst du wohl auf alle spalten zu greifen müssen

also left, right, content und border...

gruß

Zwirni ·

Die Tabelle kann nicht nur aus den 4 Einträgen bestehen, es könnten beliebig viele sein. Wie sollte ich da eine Zuordnung treffen? Hast Du bitte ein kleines Codebeispiel als Anregung?

trainerth ·

Gibts denn a schon eine Seite?
Hast du dein ganzen TS parat?
Womit machst du das? Autoparser? Templavoila? ganz alte schule?

Wenn ich dir so nen code schippsel gebe paßt der nich oder wir verstehen uns immer noch falsch...
Aber wenn ich dich richtig verstehe...

CONTENT_SPLTT  = COA
CONTENT_SPLTT .wrap = <table>|</table> // Öffnet die Tabelle
CONTENT_SPLTT  {
    10 = CONTENT
    10.wrap = <tr><td>|</td> // Öffnet ein tr und legt ein td um den inhalt
    10 {
        table = tt_content
        select.orderBy = sorting
        select.where = colPos = 0
    }
    
    20 = CONTENT
    20.wrap = <td>|</td></tr> // Legt ein td um den inhalt und schließt das tr
    20 {
        table = tt_content
        select.orderBy = sorting
        select.where = colPos = 1
    }
    
    30 = CONTENT
    30.wrap = <tr><td>|</td> // Öffnet ein tr und legt ein td um den inhalt
    30 {
        table = tt_content
        select.orderBy = sorting
        select.where = colPos = 2
    }
    
    40 = CONTENT
    40.wrap = <td>|</td></tr> // Legt ein td um den inhalt und schließt das tr
    40 {
        table = tt_content
        select.orderBy = sorting
        select.where = colPos = 3
    }
 
}

somit hast du das Layout, musst aber inhalt (beliebig viel) in alle vier spalten packen....
geht bestimmt auch schöner... und bin mir nicht sicher wie das aussieht wenn eine Spalte mal keinen inhalt hat. Aber hinweis, tabellen sind eh nicht so schön

gruß

Zwirni ·

Ich fürchte Du hast mein Vorhaben noch nicht verstanden. Vielleicht wird es so klarer:

<table>
 <tr>
   <td>1. Inhalt aus colPos 0</td>
   <td>1. Inhalt aus colPos 2</td>
 </tr>
 <tr>
   <td>2. Inhalt aus colPos 0</td>
   <td>2. Inhalt aus colPos 2</td>
 </tr>
 <tr>
   <td>&nbsp;</td>
   <td>3. Inhalt aus colPos 2</td>
 </tr>
 <tr>
   <td>&nbsp;</td>
   <td>4. Inhalt aus colPos 2</td>
 </tr>
</table>

Wie gesagt: nur colPos 0 und colPos 2 (redaktionell gesehen Mitte und Rechts) deren Einträge jeweils nebeneinander in einer Tabelle untereinander ausgegeben werden sollen.

Die Frage geistert schon seit Jahren durch verschiedene Foren wie ich schon rausgefunden habe. Habe auch schon den Code hier (letzter Beitrag) getestet, aber ohne den Erfolg den ich erhofft hatte.

igorshmigor ·

Ich glaube nicht, dass du mit optionSplit Erfolg haben wirst. Denn wenn du Spalte 0 und 2 gemeinsam ausgibst, ist nicht garantiert, dass jeder zweite Eintrag aus Spalte 2 kommt. Die Reihenfolge kann auch ganz anders sein. Es kann beispielsweise passieren, dass die ersten drei Einträge aus Spalte 2 kommen, dann zwei aus Spalte 0, dann wieder einer aus Spalte 2.

Einfacher wäre es, wenn du nur eine Spalte verwendest. Dann kannst du die Inhalte dieser einen Spalte relativ einfach auf zwei Spalten verteilen. Oder du verwendest innerhalb dieser einen Spalte zweispaltige Content-Elemente - beispielsweise mittels TemplaVoila oder einer der zahlreichen Extensions, die sich dafür eignen, z.B: fdfx_2cols, xflextemplate, jfmulticontent, columna oder rscontentcolumn.