Rahmen (section_frame) seit TYPO3 4.3

Seit TYPO3 4.3 hatten sich Meldungen gemehrt, dass sich die Rahmen nicht mehr so problemlos ändern ließen (wohl gemerkt: ändern). Neue Rahmen hinzufügen ging hingegen problemlos, wie gewohnt.

# Funktioniert seit 4.3 *nicht* mehr
tt_content.stdWrap.innerWrap.cObject.1.value = <div class="mein-rahmen"></div>

So stellte sich die Frage, was sich geändert hat, und wie aktuelle der Weg aussehen müsste. Dem bin ich im Zuge einer Forendiskussion nachgegangen.

Vergleich des TypoScript in 4.2 vs. 4.3

css_styled_content in TYPO3 4.2 (Ausschnitt):

tt_content.stdWrap {
	innerWrap.cObject = CASE
	innerWrap.cObject {
		key.field = section_frame
 
		1 = TEXT
		1.value =<div class="csc-frame csc-frame-invisible">|</div>
		5 = TEXT
		5.value = |
		# ...
	}
}

css_styled_content in TYPO3 4.3 (Ausschnitt):

tt_content.stdWrap {
	innerWrap.cObject = CASE
	innerWrap.cObject {
		key.field = section_frame
 
		default = COA
		default {
			10 = TEXT
			10 {
				value = <div id="c{field:uid}"
				override.cObject = TEXT
				override.cObject {
					value = <div
					if.value = div
					if.equals.field = CType
				}
				insertData = 1
			}
 
			15 = TEXT
			15 {
				value = csc-default
				noTrimWrap = | class="|" |
				required = 1
			}
			# ...
		}
		1 =< tt_content.stdWrap.innerWrap.cObject.default
		1.15.value = csc-frame csc-frame-invisible
		5 =< tt_content.stdWrap.innerWrap.cObject.default
		5.15.value = csc-frame csc-frame-rulerBefore
		# ...
	}
}

Was ist nun die Änderung, die in die Quere kommt?

In TYPO3 4.2 waren die cObjects einfache TEXT-Objekte. Diesen konnte man problemlos einen neuen Value zuweisen und alles hat gepasst.

In TYPO3 4.3 ist das cObject nun kein TEXT-Objekt mehr, sondern ein COA-Objekt. Dieses wird für den default-Fall definiert und in allen weiteren Fällen referenziert ( =< ). COA-Objekte haben keine value-Eigenschaft, wodurch eine Änderungen wie am Artikelanfang keine Auswirkung hat, weil sie einfach ignoriert wird.

Möglich wäre nun, dass man das definierte cObject erst einmal löscht (damit aber auch die spaceBefore/spaceAfter-Behandlung usw.), und dann im Anschluss wieder wie früher ein TEXT-Objekt direkt definiert:

tt_content.stdWrap.innerWrap.cObject.1 >
tt_content.stdWrap.innerWrap.cObject.1 = TEXT
tt_content.stdWrap.innerWrap.cObject.1.value = <div class="mein-rahmen">|</div>

Eigene Rahmen

Dem Ganzen kann man auch etwas aus dem Weg gehen durch eigene Rahmen. Das Schaffen eigener Rahmen erklärt Steffen in Neue Rahmen für Content-Elemente. Aber aufpassen, spaceBefore/-After usw. würden damit wegfallen – oder müssten mit im TS ergänzt werden.

Links:

2 Antworten to “Rahmen (section_frame) seit TYPO3 4.3”

  1. avatar

    Hallo Julian!
    Ich würde da noch folgenden Link-Tipp hinzufügen: http://maddesigns.de/rahmen-fuer-inhaltselemente-in-typo3-44-112.html
    Mein Artikel zeigt wie auch die Eigenschaften „spaceBefore/-After“ erhalten bleiben und man ein zusätzlichen DIV-Container innerhalb unterbrigen kann.

  2. avatar

    Hallo Sven.
    Danke für den Linkhinweis, der als Ergänzung sicherlich für manchen hilfreich ist.
    Mein Beitrag befasst sich primär mit der unterschiedlichen Handhabung des Rahmens zwischen TYPO3 4.2 und 4.3. Die konkrete Nutzung der Rahmen habe ich bewusst eher ausgeklammert. Hier helfen dann Artikel, wie der von Dir bzw. Steffen weiter.
    Viele Grüße
    Julian

Schreibe einen Kommentar