Zum Inhalt springen

isTrue Abfrage & Wrap

Erstellt am 18. Oktober 2004 · 7 Antworten · letzte Antwort am 19. Oktober 2004

Tags: Frage

dan33 ·

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

jenses ·

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

dan33 ·

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.

mstuebner ·

@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
dan33 ·

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

jenses ·

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

dan33 ·

Wow, scheint zu funktionieren.

Erste Tests waren erfolgreich, werde mir das gleich einmal näher anschauen.

DANKE!