Hi,
ich möchte gerne ein content-Feld mit einem Rahmen wrappen. Allerdings soll das nur passieren, wenn das content-Feld auch Inhalt hat. Das heisst, wenn das Feld leer ist soll auch kein Rahmen um den leeren Inhalt gebastelt werden.
Ich habe jetzt schon ziemlich lange dran rumprobiert, aber irgendwie funzt es nicht. 🙁
Das habe ich mal in der Typo3 Doku gefunden:
page.10 = TEXT
page.10.field = subtitle
page.10.ifEmpty = Hello world
Bei mir klappt es aber nicht mit dem ifEmpty, kann bzw. muss man das vielleicht mit conditions machen? Hab's damit allerdings auch noch nicht hinbekommen.
P.S.: Habe schon 3-4 Threads hier und in anderen Foren zum gleichen Thema gefunden, allerdings immer ohne Antwort. Hoffentlich habe ich mehr Glück 🙂
Hi,
ich bin jetzt einen Schritt weitergekommen. Habe das hier im Netz gefunden und klappt auch soweit. Das heisst er gibt mir ein Warnungs-Bildchen aus, wenn kein content vorhanden ist. Allerdings setzt er mir den Rahmen jetzt auch, wenn das content-Element leer ist und das soll er ja nicht.
Finde in dem Code allerdings keinen Fehler. Rein logisch müsste es gehen ...
Hat einer von euch ne Idee?
http://typo3.org/1422+M578ca6735f1.0.html
cadreTop = HTML
cadreTop.value (
<table border=1>
<tr>
<td>
)
cadreBottom = HTML
cadreBottom.value (
</td>
</tr>
</table>
)
leftContent = COA
leftContent {
10 < cadreTop
10.wrap = |
10.if.isTrue.numRows < styles.content.getLeft
# Create '10' if there's CONTENT in styles.content.getLeft
20 = TEXT
20.value = <img src="fileadmin/templates/gfx/warning.gif">
20.wrap = | <br>
20.if.isFalse.numRows < styles.content.getLeft
# Create '20' if there's NO CONTENT in styles.content.getLeft
30 < styles.content.getLeft
40 < cadreBottom
40.wrap = |
40.if.isTrue.numRows < styles.content.getLeft
# Create '40' if there's CONTENT in styles.content.getLeft
Hi,
du kannst es mit override lösen:
page.10 = TEXT
page.10.value = Hello world
page.10.override.field = subtitle
Bedeutet: page.10 wird als Textobjekt definiert und mit dem Wert "Hello world" gefüllt.
In der nächsten Zeile wird überprüft, ob im subtitle-Feld etwas steht. Wenn ja, wird der Wert von page.10 mit dem Wert aus dem subtitle-Feld überschrieben.
Auf dieser Seite: http://typo3.org/doc.0.html?&tx_extrepmgm_pi1[extUid]=269&tx_extrepmgm_pi1[tocEl]=799&cHash=6e5c3e900d
sind ein paar nette Beispiele dazu.
Ich verwende auf einer Seite was ähnliches, um einen Marker mit Inhalt zu füllen. Nur wenn es tatsächlich Inhalt für den Marker gibt, wird ein div drumrum gewrapt. Vielleicht hilft dir das ja:
marks.INHALT = COA
marks.INHALT {
10 = TEXT
10 {
value = {page:subtitle}
insertData = 1
stdWrap.required = 1
stdWrap.wrap = <div id="rahmen">|</div>
}
}
Ciao,
Sacha
Hi Sacha,
deine Lösung hatte ich auch erst überlegt. Ich weiss allerdings nicht wie ich den Haupttext, also nicht die Überschrift, in das Value-Feld bekomme. Habe da in den Tutorials auch kein passendes Beispiel gefunden. Es wurde immer nur als Beispiel title oder subtitle verwendet und nie der Haupttext. Vielleicht ist das auch gar nicht möglich mit value.
Wenn ich z.B. schreibe: value = {page:content} dann passiert da gar nichts bei mir.
Habe jetzt eine Lösung gefunden, allerdings ohne wrap:
# Hiermit wird der Inhalt in eine Rahmenbox gepackt
marks.BOX_INHALT = COA
marks.BOX_INHALT {
# Rahmen Anfang
10 = TEXT
10.value = <table width="99%" border="0" align="center" cellpadding="1" cellspacing="1"><tr><td>
10.if.isTrue.numRows < styles.content.getLeft
# Inhalt innerhalb des Rahmens
20 = TEXT
20.if.isTrue.numRows < styles.content.getLeft
20 < styles.content.getLeft
# Rahmen Ende
30 = TEXT
30.if.isTrue.numRows < styles.content.getLeft
30.value = </td></tr></table>
Gruß,
Alex
Hi,
jabba schrieb
deine Lösung hatte ich auch erst überlegt. Ich weiss allerdings nicht wie ich den Haupttext, also nicht die Überschrift, in das Value-Feld bekomme.
Vielleicht ist das auch gar nicht möglich mit value.
Wenn ich z.B. schreibe: value = {page:content} dann passiert da gar nichts bei mir.
stimmt, das kann nicht funktionieren, denn mit der value-Schreibweise oben sprichst du Felder der Tabelle pages an. Da die Tabelle pages kein content Feld hat, funktioniert es auch nicht. Schau die mal mit dem phpMyAdmin die Tabellen an, da wird manches klarer.
Die Inhalte einer Seite stehen ja in der Tabelle tt_content, zumindest die Inhalte aus den normalen Inhaltselementen. Die Zuordnung der Inhaltselemente zu einer bestimmten Seite erfolgt über das Feld PID in der Tabelle tt_content. Um zu verstehen, wie Typo den Inhalt mit styles.content.getLeft zusammenstellt, solltest du dir mal mit dem Template-Analyzer styles.content ansehen.
Habe jetzt eine Lösung gefunden, allerdings ohne wrap:
mit wrap ginge es so:
# Hiermit wird der Inhalt in eine Rahmenbox gepackt
marks.BOX_INHALT = COA
marks.BOX_INHALT {
10 < styles.content.getLeft
stdWrap.required = 1
stdWrap.wrap = <table width="99%" border="0" align="center" cellpadding="1" cellspacing="1"><tr><td> | </td></tr></table>
}
Wobei ein <div id="inhaltsbox">|</div> natürlich sinnvoller wäre, als eine Tabelle.
Ciao,
Sacha