Zum Inhalt springen

frame_class mit mehreren Klassen versehen (TYPO3 v 11.5.13)

Erstellt am 18. August 2022 · 1 Antwort · letzte Antwort am 19. August 2022

Tags: TYPO3 11, Frage

wtdesign ·

Hallo zusammen,

im Backend kann man pro Inhaltselement eine frame_class vergeben, die man zuvor im TsConfig definiert hat.

TCEFORM.tt_content.frame_class {
  removeItems= ruler-before,ruler-after,indent,indent-left,indent-right
  addItems.test = Test
  addItems.neu = Neu
}

Alles schön und gut. Nur bräuchte ich tatsächlich di Möglichkeit mehrere Klassen in einer frame_class Definition unterzubringen, da ich nicht im Bereich von Fluid einfach den Klassennamen abändern kann.

Es sollte dann zum Beispiel aussehen wie folgt:

TCEFORM.tt_content.frame_class {
  removeItems= ruler-before,ruler-after,indent,indent-left,indent-right
  addItems.test secondClass = Test
  addItems.neu.secondClass = Neu
}

Beide Versionen funktionieren aber leider nicht, weshalb ich gedacht habe, dass man das evtl so lösen könnte wie früher. Aber auch das funktioniert nicht.

tt_content.stdWrap.innerWrap.cObject.test =< tt_content.stdWrap.innerWrap.cObject.default
tt_content.stdWrap.innerWrap.cObject.test.20.10.value = test secondClass
 
tt_content.stdWrap.innerWrap.cObject.neu =< tt_content.stdWrap.innerWrap.cObject.default
tt_content.stdWrap.innerWrap.cObject.neu.20.10.value = neu secondClass

Dann habe ich versucht eine Fluid-If-Condition ins TypoScript Setup zu schreiben, aber auch das hat NICHT funktioniert.

Aber auch das funktioniert nicht.

tt_content.stdWrap.innerWrap.cObject = CASE
tt_content.stdWrap.innerWrap.cObject {
    key.field = layout
    default = TEXT
    default.value = <div id="wt{field:uid}" class="layout-{field:layout} {f:if( condition: '{field:frame_class}==test', then: 'xx', else: 'cc' )}">|</div>
}
tt_content.stdWrap.innerWrap.insertData = 1

Langsam gehen mir die Ideen aus. Wichtig ist, dass ich es bereits in dem Wrap benötige, welchen ich im letzten Code-Schnipsel erwähnt habe. Im Fluid-Template wäre das ja ein Kinderspiel.

wtdesign ·

Das Problem habe ich gestern anders gelöst, da ich keine Lösung finden konnte, welche mir erlaubt die CSS-Klassen im Bereich frame_class mittels Typoscript direkt mit mehreren Klassen auszustatten.

Aus diesem Pfad -->
/typo3_src-11.5.14/typo3/sysext/fluid_styled_content/Resources/Private/Layouts/
habe ich mir die "Default.html" genommen und diese in unsere eigene Extension gelegt

CONSTANTS
styles.templates.layoutRootPath.10 = EXT:myextension/Resources/Private/fluid_styled_content/Layouts/

SETUP
lib.contentElement.layoutRootPaths.10 = EXT:myextension/Resources/Private/fluid_styled_content/Layouts/

In der Default.html habe ich dann mit einfachen Fluid-If-Conditons gearbeitet. Habe dann auch den Teil fürs Wrapping je nach Layout ebenfalls in die Datei integriert und den alten Teil aus dem SETUP entfernt.

Vllt hilft das ja jemandem weiter.

Wenn es aber doch eine Möglichkeit im Typoscript SETUP geben sollte, würde mich diese sehr interessieren. Da man in der Default.html z. B. keine f:section und f:render-Funktion verwenden kann.