Hi!
Stehe mit meinen - lieder fast nicht vorhandenen TypoScript Kentnissen - wieder mal am Ende meiner Weisheit.
Ich würde gerne die Inhalte der rechten Spalte in einer Tabelle nebeneinander darstellen. Folgender Code macht das auch.
#######################################################
# auslesen der rechten Spalte- Anfang
# wird nur ausgegeben, wenn tatsächlich ein Inhalt vorhanden ist
marks.TOPNEWS = COA
marks.TOPNEWS.10 = CONTENT
marks.TOPNEWS.10.if.isTrue < styles.content.getRight
marks.TOPNEWS.10 < styles.content.getRight
marks.TOPNEWS.10.wrap = <table border=1><tr>|</tr></table>
#marks.TOPNEWS.10.intval = 1
# um jedes Objekt in der rechten Spalten einzeln ein <td> legen
marks.TOPNEWS.10.renderObj.stdWrap.wrap = <td>|</td>
# auslesen der rechten Spalte - Ende
#######################################################
Folgende Problematik ist noch vorhanden:
Wenn es keinen Inhalt in der rechten Spalte gibt, wird trotzdem ein "<table border=1><tr></tr></table>" ausgegeben.
Wie kann ich es anstellen, dass nichts ausgegeben wird, wenn keine Daten vorhanden sind?
Lg,
Daniel
Hallo Daniel !
marks.TOPNEWS.10.if.isTrue < styles.content.getRight
marks.TOPNEWS.10 < styles.content.getRight
Das zweite Statement überschreibt das erste, es wird immer, auch wenn nichts vorhanden ist, marks.TOPNEWS.10 Inhalt zugewiesen.
Also streiche es mal weg.
Dann könntest du mal folgendes versuchen :
marks.TOPNEWS.10.required = 1
marks.TOPNEWS.10.wrap = <table border=1><tr>|</tr></table>
Bei mir funktioniert ein ähnliches Konstrukt ausgezeichnet.
Ansonsten schau mal in die TSRef nach "required".
viele Grüße
jenses
Hi Jenses!
Danke für die rasche Antwort.
Problem ist leider, wenn ich es weglasse ==> folgender Code
marks.TOPNEWS = COA
marks.TOPNEWS.10 = CONTENT
marks.TOPNEWS.10.if.isTrue < styles.content.getRight
marks.TOPNEWS.10.required = 1
marks.TOPNEWS.10.wrap = <table border=1><tr>|</tr></table>
marks.TOPNEWS.10.renderObj.stdWrap.wrap = <td>|</td>
Dann wird jedesmal (also immer) nur:
<table border=1><tr></tr></table>
ausgegeben ansonsten aber nichts. Der Text den er ausgeben sollte, wird wiederrum nicht ausgegeben.
Hat irgendwer noch Hilfe parat?
@dan33:
Absolut ungetestet, aber versuch doch mal Folgendes, und sag dann bescheid ob es das tut was es soll:
marks.TOPNEWS = COA
marks.TOPNEWS.10 = CONTENT
marks.TOPNEWS.10.if.isTrue < styles.content.getRight
marks.TOPNEWS.10.10 = CONTENT
marks.TOPNEWS.10.10 < styles.content.getRight
marks.TOPNEWS.10.10.wrap = <table border=1><tr>|</tr></table>
marks.TOPNEWS.10.der ganze Rest der immer gerendert werden soll
Nein, leider wird hier überhaupt nichts ausgegeben.
Ich schildere das PRoblem vielleicht noch mal in Pseudocode - vielleicht hat ja wer eine komplett neue Lösung:
WENN getRight einen INHALT HAT DANN gib folgendes aus
<table><tr>
DURCHLAUFE jedes ELEMENT von getRIGHT und umschließe es mit
<td>|</td>
</tr></table>
ANSONSTEN mach gar nichts (gib nichts aus)
Beispiel aus der Praxis:
In getright habe ich 2 Elemente "TEXT" stehen.
1) das ist ein Test
2) das ist noch ein Test
Herauskommen soll
<table><tr>
<td>das ist ein Test</td>
<td>das ist noch ein Test</td>
</tr></table>
Eventuell kann man noch eine ifEmpty Abfrage einbauen??
lg,
Daniel
Ich hatte die ganze Zeit das Gefühl,
das es vor kurzem einen ganz ähnlichen Thread gab.
Nun hab ichs gefunden.
#######################################################
# auslesen der rechten Spalte- Anfang
# wird nur ausgegeben, wenn tatsächlich ein Inhalt vorhanden ist
marks.TOPNEWS.10 = CONTENT
marks.TOPNEWS.10 < styles.content.getRight
marks.TOPNEWS.10.stdWrap.required=1
marks.TOPNEWS.10.stdWrap.wrap = <table border=1><tr>|</tr></table>
# um jedes Objekt in der rechten Spalten einzeln ein <td> legen
marks.TOPNEWS.10.renderObj.stdWrap.wrap = <td>|</td>
# auslesen der rechten Spalte - Ende
#######################################################
(Der Code ist schon an deine Bedürfnisse angepaßt)
viele Grüße
jenses
Wow, scheint zu funktionieren.
Erste Tests waren erfolgreich, werde mir das gleich einmal näher anschauen.
DANKE!