section_frame tt_content beeinflussen [Gelöst]

  • charly21 charly21
    Padawan
    0 x
    52 Beiträge
    0 Hilfreiche Beiträge
    10. 02. 2010, 15:36

    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.

    [TS]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>
    [/TS]

    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.

    [TS]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>

    [/TS]

    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


  • 1
  • charly21 charly21
    Padawan
    0 x
    52 Beiträge
    0 Hilfreiche Beiträge
    11. 02. 2010, 11:28

    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

    [TS]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>
    }[/TS]

    Den Header des PageContens beinflussen abhängig von section_frame

    [TS]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>
    }[/TS]

    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.

    [TS]# 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 >
    [/TS]

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

  • bobosch bobosch
    T3PO
    0 x
    13 Beiträge
    0 Hilfreiche Beiträge
    01. 02. 2012, 15:07

    Beim Textelement funktioniert folgender block

    1. tt_content.text.20.innerWrap.cObject = CASE
    2. tt_content.text.20.innerWrap.cObject {
    3. key.field = section_frame
    4. 100 = TEXT
    5. 100.value = <div class="csc-frame csc-frame-teaser-bodytext">|</div>
    6. }

  • jh@ jh@
    Padawan
    0 x
    32 Beiträge
    0 Hilfreiche Beiträge
    03. 05. 2016, 13:59

    Sei gegrüßt,

    vorweg: ich bin nicht DER Programmierheld. Folgendes:

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

    [b]PAGE TS:[/b]

    1. # neuen Rahmen hinzufuegen
    2. TCEFORM.tt_content.section_frame {
    3. addItems.100 = Akkordeon
    4. }

    [b]TS:[/b]

    1. # eigene Rahmen/Divs für Inhaltselemente definieren
    2. # section_frame ist das Feld "eigene Rahmen"
    3. key.field = section_frame
    4.  
    5. 100=COA
    6. 100{
    7. stdWrap.outerWrap = <div class="accordion csc-default">|</div>
    8. 10 = TEXT
    9. 10.field=header
    10. 10.wrap = <h2 class="accordion_header">|</h2>
    11. 20 = TEXT
    12. 20.field=bodytext
    13. 20.required = 1
    14. 20.parseFunc = < lib.parseFunc_RTE
    15. 20.wrap = <div class="accordion_body">|</div>
    16. }
    17. }

    Die Ausgabe und jQuery funktioniert soweit.

    [b]Problem:[/b]

    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.

    [b]Hatte dazu soetwas versucht:[/b]

    1. # Wenn es section frame ein akkordeon ist, dann blende den normal gewrappten inhalt aus
    2.  
    3. tt_content.text{
    4. if.value.field=section_frame
    5. if.equals=100
    6. # if.value = 100
    7. # if.equals.field=section_frame
    8. # field >
    9. }

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

    Kann mich jemand erleuchten?

    Vielen Dank schon mal!

  • 1