csc-firstHeader mit Überschriftenlayouts

  • Nicole87 Nicole87
    R2-D2
    0 x
    67 Beiträge
    0 Hilfreiche Beiträge
    30. 06. 2010, 14:37

    Hallo!

    Ich habe wieder ein Problem: Ich habe es geschafft, für die Überschriften eines Elementes verschiedene Stile auswählbar zumachen und diese auch schön in h1, h2 und h3 auszugeben.

    Leider überschreibe ich so immer das csc-firstHeader, das TYPO3 setzt. Allerdings muss es doch möglich sein, dass mein Layout umgesetzt und das csc-firstHeader eingebunden wird! Außerdem bekommt die erste Überschrift, wenn sie im RTE gesetzt wird, anscheinend auch keine csc-firstHeader-Klasse...

    Das würde ich alles gerne ändern, weiß aber nicht wie... Ich hoffe mir kann hier einer der Experten helfen ;)

    Der Code, den ich für die Überschriftenlayouts nun in mein Setup eingetragen habe ist dieser:

    1. #Überschriftlayouts
    2. lib.stdheader = CASE
    3. lib.stdheader {
    4. key.field = header_layout
    5. #Default/H1 (0)
    6. default = TEXT
    7. default.field = header
    8. default.wrap = <h1>|</h1>
    9. # Verlinkung von Ueberschriften
    10. default.typolink {
    11. parameter.insertData = 1
    12. parameter = {field:header_link}
    13. }
    14.  
    15. #H2(1)
    16. 1 = TEXT
    17. 1.field = header
    18. 1.wrap = <h2>|</h2>
    19. # Verlinkung von Ueberschriften
    20. parameter.insertData = 1
    21. parameter = {field:header_link}
    22. }
    23.  
    24. #H3(2)
    25. 2 = TEXT
    26. 2.field = header
    27. 2.wrap = <h3>|</h3>
    28. # Verlinkung von Ueberschriften
    29. parameter.insertData = 1
    30. parameter = {field:header_link}
    31. }
    32.  
    33. }

    Bin für jeden Wink echt dankbar! Meldet euch! *smile*

    Grüße
    Nicole


  • Nicole87 Nicole87
    R2-D2
    0 x
    67 Beiträge
    0 Hilfreiche Beiträge
    05. 07. 2010, 19:08

    Ich schubs nochmal, weil ich noch keine Lösung dafür gefunden habe....

    Kein TypoScript-Crack da, der mal ein Viertelstündchen investieren mag? *liebschau*

    Ich komm einfach nicht weiter... #angry#

    Grüße
    Nicole

  • BastianBalthasarBux BastianBa...
    Jedi-Ratsmitglied
    0 x
    768 Beiträge
    9 Hilfreiche Beiträge
    07. 07. 2010, 13:00

    Tipp 1: guck in das css_styled_content typoscript

    Tipp 2:

    lib.stdheader.3.10.1 < lib.stdheader.default.10.1
    lib.stdheader.3.10.1.fontTag = <h1 class="right" {register:headerStyle}>|</h1>

    wobei '3' vom CASE Objekt kommt.

    wenn dir das zu wenig hingeworfene Brocken sind, kannst dich ja gern noch mal melden. ;)

    To err is human; to really screw things up requires the root password.
    https://www.Riccabona.IT/
    https://T3BOARD.TYPO3.org/

  • BastianBalthasarBux BastianBa...
    Jedi-Ratsmitglied
    0 x
    768 Beiträge
    9 Hilfreiche Beiträge
    07. 07. 2010, 13:06

    achso, noch hinzuzufügen für deinen anwendungsfall:

    das case objekt ist bei mir die colpos. du brauchst also theoretisch lediglich sowas zu schreiben:

    lib.stdheader.10.1.fontTag = <h1 {register:headerStyle}>|</h1>
    lib.stdheader.10.2.fontTag = <h2 {register:headerStyle}>|</h2>

    ganz ohne (eigenes) case objekt etc..., AFAIR.
    aber wie gesagt, am besten aufschluss gibt css_styled_content TS.
    Aufrufbar am einfachsten via Template Analyzer in deinem (TypoScript) Template-Datensatz und dann ein beherzter klick auf 'EXT:css_styled_content/static/'

    To err is human; to really screw things up requires the root password.
    https://www.Riccabona.IT/
    https://T3BOARD.TYPO3.org/

  • Nicole87 Nicole87
    R2-D2
    0 x
    67 Beiträge
    0 Hilfreiche Beiträge
    07. 07. 2010, 20:31

    Hallo BBB!

    Danke für deine Hilfe! :D

    Leider scheine ich sie nicht richtig umsetzen zu können...

    1. #Überschriftlayouts
    2. lib.stdheader = CASE
    3. lib.stdheader {
    4. key.field = header_layout
    5. #Default/H1 (0)
    6. default = TEXT
    7. default.field = header
    8. default.fontTag = <h1 {register:headerStyle}>|</h1>
    9. # Verlinkung
    10. default.typolink {
    11. parameter.insertData = 1
    12. parameter = {field:header_link}
    13. }

    Gibt mir leider nur
    1. <h1 {register:headerStyle}>Willkommen</h1>
    aus...

    Ich hab das mit der CASE nicht so ganz verstanden und wo nun mein TemplateAnalyzer ist, weiß ich leider nicht... ^^"

    Ich habe im typo3/sysext/css_styled_content/static/setup.txt das gefunden:

    1. # Create class="csc-firstHeader" attribute for <Hx> tags
    2. 3.headerClass = csc-firstHeader
    3. 3.headerClass.if.value=1
    4. 3.headerClass.if.equals.data = cObj:parentRecordNumber
    5. 3.headerClass.noTrimWrap = | id="|"|

    Ich weiß nur nicht, wie ich n un damit umgehen soll... :/ sollte ich das nochmal hinter mein Layout-Script schreiben oder wie?

    Danke!

    Gruß
    Nicole

  • BastianBalthasarBux BastianBa...
    Jedi-Ratsmitglied
    0 x
    768 Beiträge
    9 Hilfreiche Beiträge
    07. 07. 2010, 21:02

    nö, so wie ich das sehe bist du insofern am falschen dampfer, als es ja schon das case objekt gäbe, für die unterschiedlichen layouts (überschrift 1, überschrift 2, etc.)
    hier diese stelle in css_styled_content setup:

    581: 10.key.field = header_layout
    582: 10.key.ifEmpty = {$content.defaultHeaderType}
    583: 10.key.ifEmpty.override.data = register: defaultHeaderType
    584:
    585: 10.1 = TEXT
    586: 10.1.current = 1
    587: 10.1.insertData = 1
    588: 10.1.fontTag = <h1{register:headerStyle}{register:headerClass}>|</h1>
    589:
    590: 10.2 < .10.1
    591: 10.2.fontTag = <h2{register:headerStyle}{register:headerClass}>|</h2>
    592:
    593: 10.3 < .10.1
    594: 10.3.fontTag = <h3{register:headerStyle}{register:headerClass}>|</h3>
    595:
    596: 10.4 < .10.1
    597: 10.4.fontTag = <h4{register:headerStyle}{register:headerClass}>|</h4>
    598:
    599: 10.5 < .10.1
    600: 10.5.fontTag = <h5{register:headerStyle}{register:headerClass}>|</h5>

    (von nem 4.4.0 default)

    daran sieht man, eigentlich wär das ja schon gemacht.
    genaugenommen brauchst nur css angeben für h1, h2 etc ...

    und natürlich diese stile auswählbar machen, die du haben möchtest.

    das wieder kannst via page-TS machen:
    beispiel für 3 überschriften:

    1. TCEFORM.tt_content.header_layout {
    2. // header_layout Available types:
    3. header 1 = 1
    4. header 2 = 2
    5. header 3 = 3
    6.  
    7. // Default setzen
    8. setup.defaults = 1
    9. altLabels.1 = Überschrift 1
    10. altLabels.2 = Überschrift 2
    11. altLabels.3 = Überschrift 3
    12. disableNoMatchingValueElement = 1
    13. // hier können items entfernt werden
    14. removeItems = 0,4,5,100
    15. }

    so gesehen denkst du vermutlich einfach zu kompliziert. ;)

    To err is human; to really screw things up requires the root password.
    https://www.Riccabona.IT/
    https://T3BOARD.TYPO3.org/

  • Nicole87 Nicole87
    R2-D2
    0 x
    67 Beiträge
    0 Hilfreiche Beiträge
    08. 07. 2010, 09:14

    Morgen!

    Ich glaub ich bin einfach zu doof für TypoScript *lol*

    Habe nun den oben genannten Code von mir entfernt. In der Layoutauswahl für die Überschrift gibt es "Normal", "Überschrift 2", "Überschrift 3" und "Verborgen". So.

    Lass ich also den Code soweit raus, bekomme ich meinen csc-firstHeader ausgegeben - Jippi -, aber die Überschriften nicht so wie ich das will:
    Normal = h1
    Überschrift 2 = h1
    Überschrift 3 = h3

    Nachdem ich nun versucht habe, das meinen bedürfnissen anzupassen (das 0. Layout h1, das 1. h2, das 2. h2) bekomme ich:
    Normal = h2
    Überschrift 2 = h2
    Überschrift 3 = h3

    Warum das nun so und nicht ist wie ich will, verstehe ich nicht. Ich habe in meinem TS stehen:

    1. header_layout {
    2. removeItems = 3, 4, 5
    3. altLabels.0 = Normal
    4. altLabels.1 = Überschrift 2
    5. altLabels.2 = Überschrift 3
    6. }

    Und in der Setup.txt steht nun:
    1. # This CASE cObject renders the header content:
    2. # currentValue is set to the header data, possibly wrapped in link-tags.
    3. 10 = CASE
    4. field = header
    5. typolink.parameter.field = header_link
    6. }
    7. 10.key.field = header_layout
    8. 10.key.ifEmpty = {$content.defaultHeaderType}
    9. 10.key.ifEmpty.override.data = register: defaultHeaderType
    10.  
    11. 10.1 = TEXT
    12. 10.1.current = 1
    13. 10.1.insertData = 1
    14. 10.1.fontTag = <h2{register:headerStyle}{register:headerClass}>|</h2>
    15.  
    16. 10.0 < .10.1
    17. 10.0.fontTag = <h1{register:headerStyle}{register:headerClass}>|</h1>
    18.  
    19. 10.2 < .10.1
    20. 10.2.fontTag = <h3{register:headerStyle}{register:headerClass}>|</h3>
    21.  
    22. 10.3 < .10.1
    23. 10.3.fontTag = <h3{register:headerStyle}{register:headerClass}>|</h3>

    Habe dort die h-Tags geändert und versucht eine Definition für das nullte Label einzubinden... Klappt wie gesagt nicht...

    Noch eine Idee? #paralyzed#

    Grüße
    Nicole

  • BastianBalthasarBux BastianBa...
    Jedi-Ratsmitglied
    0 x
    768 Beiträge
    9 Hilfreiche Beiträge
    08. 07. 2010, 09:36

    Also, dann formulieren wir aus:

    das hier kommt in das TSconfig Feld von deiner Root-Seite, und sorgt dafür, dass man im Dropdown des CEs die entsprechenden Einträge auswählen kann:

    1. TCEFORM.tt_content.header_layout {
    2. // header_layout Available types:
    3. header 1 = 1
    4. header 2 = 2
    5. header 3 = 3
    6.  
    7. // Default setzen
    8. setup.defaults = 1
    9. altLabels.1 = Überschrift 1
    10. altLabels.2 = Überschrift 2
    11. altLabels.3 = Überschrift 3
    12. disableNoMatchingValueElement = 1
    13. // hier können items entfernt werden
    14. removeItems = 0,4,5,100
    15. }

    Überschrift 1 -> in dieser Konfiguration Standardmässig ausgewählt.

    Für das Frontend-Rendering musst du das hier in dein TypoScript Setup des Templates schreiben:

    1. lib.stdheader.10.1.fontTag = <h1 {register:headerStyle}>|</h1>
    2. lib.stdheader.10.2.fontTag = <h2 {register:headerStyle}>|</h2>
    3. lib.stdheader.10.3.fontTag = <h3 {register:headerStyle}>|</h3>

    Damit werden die drei Übeschriften dann als h1, h2, und h3 gerendert, was sie aber ja eh schon standardmässig werden, AFAIK

    Daher ist eigentlich nur der teil für das TSconfig für dich interessant.

    im CSS kannst dann ganz einfach für h1, h2 und h3 die stile vergeben.
    Du könntest aber, wenn dir die h1-3 nicht reichen für das css sowas noch machen:

    1. lib.stdheader.10.1.fontTag = <div class="myh1"><h1 {register:headerStyle}>|</h1></div>
    2. lib.stdheader.10.2.fontTag = <div class="myh2"><h2 {register:headerStyle}>|</h2></div>
    3. lib.stdheader.10.3.fontTag = <div class="myh3"><h3 {register:headerStyle}>|</h3></div>

    Und bitte: Wenn du TS postest, dann bitte 'alles' -> soll heissen. zumindest die korrekte Objekhierarchie.

    mit '10.1.irgendwas' kann kein mensch so wirklich wissen, wo du dich grad befindest in dem multidimensionalen array. ;) (ja, typoscript ist nichts anderes als ein riesiges multidimensionales php array)

    To err is human; to really screw things up requires the root password.
    https://www.Riccabona.IT/
    https://T3BOARD.TYPO3.org/

  • Nicole87 Nicole87
    R2-D2
    0 x
    67 Beiträge
    0 Hilfreiche Beiträge
    08. 07. 2010, 14:28

    Hallo!

    Danke fürs Ausformulieren, aber mein Problem löst das doch trotzdem nicht!?
    Wie die "header_layout Available types" funktionieren ist mir nicht wirklich klar. Die Titel der Labels habe ich eingestellt und die überflüssigen Layouts entfernt.
    Siehe hier (Template-TS):

    1. TCEFORM.tt_content {
    2. #Überschriftstypen reduzieren und umbenennnen
    3. header_layout {
    4. removeItems = 3, 4, 5
    5. altLabels.0 = Normal
    6. altLabels.1 = Überschrift 2
    7. altLabels.2 = Überschrift 3
    8. }

    Jedoch ist bei mir eben nicht
    1 = h1
    2 = h2
    3 = h3
    sondern
    0 = h1
    1 = h2
    2 = h3

    Wenn ich nun aber folgendes in mein TS aufnehme, wie du gesagt hast, dann ist der csc-firstHeader wieder weg.

    1. lib.stdheader.10.1.fontTag = <h1 {register:headerStyle}>|</h1>
    2. lib.stdheader.10.2.fontTag = <h2 {register:headerStyle}>|</h2>
    3. lib.stdheader.10.3.fontTag = <h3 {register:headerStyle}>|</h3>
    Das wäre ja quasi wieder die Ausgangssituation.

    Habe gerade mal folgendes versucht:

    1. lib.stdheader.10.1.fontTag = <h1 {register:headerClass}>|</h1>
    2. lib.stdheader.10.2.fontTag = <h2 {register:headerClass}>|</h2>
    3. lib.stdheader.10.3.fontTag = <h3 {register:headerClass}>|</h3>

    Jedoch erscheint nun in jeder h1 bei der ich das Layout 0 gewählt habe, die Klasse csc-firstHeader gesetzt.
    Das Überschriftenlayout 1 wird nun auch als h1 ausgegeben und Layout 2 als h2. Jedoch sollte 1 h2 und 2 h3 ausgeben... Jedoch sollte es doch so nicht sein - im setup.txt steht ja:
    1. # Content header:
    2. lib.stdheader = COA
    3. lib.stdheader {
    4.  
    5. # Create align style-attribute for <Hx> tags
    6. 2.headerStyle.field = header_position
    7. 2.headerStyle.required = 1
    8. 2.headerStyle.noTrimWrap = | style="text-align:|;"|
    9.  
    10. # Create class="csc-firstHeader" attribute for <Hx> tags
    11. 3.headerClass = csc-firstHeader
    12. 3.headerClass.if.value=1
    13. 3.headerClass.if.equals.data = cObj:parentRecordNumber
    14. 3.headerClass.noTrimWrap = | class="|"|
    15.  
    16. # Date format:
    17. 5 = TEXT
    18. 5.field = date
    19. 5.if.isTrue.field = date
    20. 5.strftime = %x
    21. 5.wrap = <p class="csc-header-date">|</p>
    22. 5.prefixComment = 2 | Header date:
    23.  
    24. # This CASE cObject renders the header content:
    25. # currentValue is set to the header data, possibly wrapped in link-tags.
    26. 10 = CASE
    27. field = header
    28. typolink.parameter.field = header_link
    29. }
    30. 10.key.field = header_layout
    31. 10.key.ifEmpty = {$content.defaultHeaderType}
    32. 10.key.ifEmpty.override.data = register: defaultHeaderType
    33.  
    34. 10.1 = TEXT
    35. 10.1.current = 1
    36. 10.1.insertData = 1
    37. 10.1.fontTag = <h1{register:headerStyle}{register:headerClass}>|</h1>
    38.  
    39. 10.2 < .10.1
    40. 10.2.fontTag = <h2{register:headerStyle}{register:headerClass}>|</h2>
    41.  
    42. 10.3 < .10.1
    43. 10.3.fontTag = <h3{register:headerStyle}{register:headerClass}>|</h3>
    44.  
    45. 10.4 < .10.1
    46. 10.4.fontTag = <h4{register:headerStyle}{register:headerClass}>|</h4>
    47.  
    48. 10.5 < .10.1
    49. 10.5.fontTag = <h5{register:headerStyle}{register:headerClass}>|</h5>
    50.  
    51. # Pops the used registers off the stack:
    52.  
    53. # Post-processing:
    54. equals.field = header_layout
    55. value = 100
    56. negate = 1
    57. }
    58.  
    59. stdWrap.editIcons = tt_content : header, [header_layout | header_position], [header_link|date]
    60. stdWrap.editIcons.beforeLastTag = 1
    61. stdWrap.editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.header
    62.  
    63. stdWrap.dataWrap = <div class="csc-header csc-header-n{cObj:parentRecordNumber}">|</div>
    64. stdWrap.prefixComment = 2 | Header:
    65. }

    Hab ich jetz irgendwie ein Brett vorm Kopf, oder wie?#angry#

    Gruß
    Nicole

  • BastianBalthasarBux BastianBa...
    Jedi-Ratsmitglied
    0 x
    768 Beiträge
    9 Hilfreiche Beiträge
    08. 07. 2010, 15:08

    hmm, jetzt glaub ich, ich verstehe dich nicht ganz richtig.

    Also, du willst für die Überschrift 3 (in Worten drei) verschiedene Stile auswählbar machen für den Redakteur? Korrekt?

    Genau genommen brauchst du dafür (vorausgesetzt du verwendest css_styled_content) lediglich das Schnipsel für das Page-TSconfig, um alles andere auszublenden. Der Rest ist ja schon da.
    Und im CSS kannst du dann einfach via h1, h2, h3 die Stile vergeben.
    Wenn du sicher gehen willst, dann kannst ja noch nen selector für das csc setzen, dass davon nur csc - überschriften betroffen sind. AFAIR wäre das dann etwa so:

    1. div.csc-header h1 { font-size:200px;font-weight:bold;color:fuchsia; }
    2. div.csc-header h2 { font-size:150px;font-weight:bold;color:green; }
    3. div.csc-header h3 { font-size:200px;font-weight:bold;color:blue; }

    aber vielleicht hab ich dich auch völlig falsch verstanden ...

    und btw, wozu brauchst du eigentlich das csc-first-header?

    To err is human; to really screw things up requires the root password.
    https://www.Riccabona.IT/
    https://T3BOARD.TYPO3.org/