Zum Inhalt springen

section_frame tt_content beeinflussen

Erstellt am 10. Februar 2010 · 3 Antworten · letzte Antwort am 3. Mai 2016

Tags: Frage

charly21 ·

Hallo,

ich möchte, das wenn ein Contentelement einen bestimmten section_frame hat, dieses anders gestalten.

Dem Frame einen umschließenden Div zu geben ist ja kein Problem.

tt_content.stdWrap.innerWrap.cObject = CASE
tt_content.stdWrap.innerWrap.cObject {
key.field = section_frame
100 = COA
100.wrap = <div class="csc-frame csc-frame-teaser">|</div>

Gehen wir mal davon aus, das der Typ des PageContents (Seiteninhaltes) "Image" ist.
Bei Frame wähle ich dann meinen section_frame aus.
Der Header wird mit einem header_layout versehen.

Wie bringe ich nun dem Typo3 bei, das ich genau bei diesem section_frame z.B. die Reihenfolge Header und Content vertauschen möchte.

Wenn ich dies verwende, entfernt Typo3 mir alle csc (Css Style Content) Elemente, die ich aber gern beibehalten möchte.

tt_content.stdWrap.innerWrap.cObject = CASE
tt_content.stdWrap.innerWrap.cObject {
key.field = section_frame
100 = COA
100.wrap = <div class="csc-frame csc-frame-teaser">|</div>

100.10 = TEXT
100.10.field = bodytext
100.10.wrap = <div class="csc-frame csc-frame-teaser-bodytext">|</div>

100.20.field = header
100.20.wrap = <div class="csc-frame csc-frame-teaser-header">|</div>

Das kann doch nicht so schwer sein. #angry#

Header soll also nicht so aussehen:

<div class="csc-frame csc-frame-teaser-header">Ich bin eine Überschrift</div>

sondern

<!-- Header: [begin] -->
<div class="csc-frame csc-frame-teaser-header">
<div class="csc-header csc-header-n1"><h2 style="text-align:center;" class="csc-firstHeader">Ich bin eine Überschrift</h2></div>
</div>
<!-- Header: [end] -->

Das gleiche gilt für das Bild.

In den Dokus steht überall was von bodytext, dieser ist aber ebim Typ Image in der Datenbank leer.
Wie spreche ich denn die verschiedenen Inhaltstypen an, damit der richtige Inhalt an der richtigen stelle ist.

Ich möchte hier z.B. das dieser Frame nur Inhalte vom Typ Image beachtet, da dies die Designvorgabe sein soll.
Bei allen anderen soll dann einfach kein Content zu sehen sein und der Redakteur muss sich an die Vorgaben halten.
Es wäre natürlich besser, wenn die section_frame nur abhängig vom Typ angezeigt werden könnten, aber darüber habe ich auch noch nichts gefunden.

Danke im Voraus
Charly

charly21 ·

ok, google, einer weiteren Tasse Kaffee und dem suchen nach innerwrap und nicht section_frame brachte das gewünschte ergebnis.

Den Inhalt des PageContents beeinflussen abhängig von setion_frame

tt_content.image.20.stdWrap.innerWrap.cObject = CASE
tt_content.image.20.stdWrap.innerWrap.cObject {
key.field = section_frame
100 = TEXT
100.value = <div class="csc-frame csc-frame-teaser-bodytext">|</div>
}

Den Header des PageContens beinflussen abhängig von section_frame

lib.stdheader.stdWrap.outerWrap.cObject = CASE
lib.stdheader.stdWrap.outerWrap.cObject {
key.field = section_frame
100 = TEXT
100.value = <div class="csc-frame csc-frame-teaser-header">|</div>
}

So, nun noch die Reihenfolge noch ändern und ich habe meine gewünschte Konfiguration.

wenn der Stein erstmal ins rollen kommt.

Korrigiert mich wenn ichs falsch habe, aber so funzt es jetzt.

# add own tt_content.section_frame
tt_content.stdWrap.innerWrap.cObject = CASE
tt_content.stdWrap.innerWrap.cObject {
key.field = section_frame
100 = TEXT
100.value = <div class="csc-frame csc-frame-teaser">|</div>
}

tt_content.image.20.stdWrap.innerWrap.cObject = CASE
tt_content.image.20.stdWrap.innerWrap.cObject {
key.field = section_frame
100 = TEXT
100.value = <div class="csc-frame csc-frame-teaser-bodytext">|</div>
}

lib.stdheader.stdWrap.outerWrap.cObject = CASE
lib.stdheader.stdWrap.outerWrap.cObject {
key.field = section_frame
100 = TEXT
100.value = <div class="csc-frame csc-frame-teaser-header">|</div>
}

# Change order of header and content for section_frame = 100

temp.CONTENT.IMAGE.HEADER < tt_content.image.10
temp.CONTENT.IMAGE.CONTENT < tt_content.image.20

tt_content.image = CASE
tt_content.image {
key.field = section_frame
100 = COA
100 {
10 >
10 < temp.CONTENT.IMAGE.CONTENT
20 >
20 < temp.CONTENT.IMAGE.HEADER
}
}

temp.CONTENT.IMAGE.CONTENT >
temp.CONTENT.IMAGE.HEADER >

wenig text aber große wirkung. vielleicht hilft es ja auch anderen

bobosch ·

Beim Textelement funktioniert folgender block

tt_content.text.20.innerWrap.cObject = CASE
tt_content.text.20.innerWrap.cObject {
	key.field = section_frame
	100 = TEXT
	100.value = <div class="csc-frame csc-frame-teaser-bodytext">|</div>
}
jh@ ·

Sei gegrüßt,

vorweg: ich bin nicht DER Programmierheld. Folgendes:

habe dein Script dazu verwendet ein einfaches Akkordeon mit section frames umzusetzen.

PAGE TS:

# neuen Rahmen hinzufuegen
TCEFORM.tt_content.section_frame {
     addItems.100 = Akkordeon
     }

TS:

# eigene Rahmen/Divs für Inhaltselemente definieren
tt_content.stdWrap.innerWrap.cObject = CASE
tt_content.stdWrap.innerWrap.cObject {
# section_frame ist das Feld "eigene Rahmen"
    key.field = section_frame

   100=COA
   100{
       stdWrap.outerWrap = <div class="accordion csc-default">|</div>
       10 = TEXT
       10.field=header
       10.wrap = <h2 class="accordion_header">|</h2>
       20 = TEXT
       20.field=bodytext
       20.required = 1
       20.parseFunc = < lib.parseFunc_RTE
       20.wrap = <div class="accordion_body">|</div>
   }
}

Die Ausgabe und jQuery funktioniert soweit.

Problem:

Die Inhalte werden doppelt angezeigt. Eins mit der Akkordeon-Ausgabe und ein Normales. Ich verstehe nicht ganz, wie ich den Standardinhalt NUR für die Akkordeon elemente sozusagen „leeren“ kann.

Hatte dazu soetwas versucht:

# Wenn es section frame ein akkordeon ist, dann blende den normal gewrappten inhalt aus

tt_content.text{
   if.value.field=section_frame
   if.equals=100
   field >
#   if.value = 100
#   if.equals.field=section_frame
#   field >
}

hier werden leider alle contentelemente und nicht nur 100 (Akkodreon) geleert.

Kann mich jemand erleuchten?

Vielen Dank schon mal!