Marker für Jahreszahl in Content-Elementen

  • puntila puntila
    T3PO
    0 x
    9 Beiträge
    0 Hilfreiche Beiträge
    25. 10. 2009, 12:55

    Hallo!

    Ich möchte in einem Content-Element (Text oder HTML) einen Marker für die Jahreszahl setzen, also so, dass da immer die aktuelle Jahreszahl steht. Wie geht das?

    Für mein HTML-Template habe ich das hinbekommen, indem ich in der Template-Datei den Marker ###YEAR### eingesetzt habe, ein entsprechendes Typo3-Template angelegt und per TypoScript folgendes einbinde:

    [TS]# PAGE object:
    page = PAGE
    page {
    10 = TEMPLATE
    10 {
    template = FILE
    template.file = template.html
    workOnSubpart = DOCUMENT_BODY
    marks {
    YEAR = TEXT
    YEAR.data = date:Y
    }
    }
    [/TS]

    Außerdem habe ich herausgefunden, dass ich mit

    [TS]constants {
    JAHR = 2009
    }
    [/TS]

    zumindest für das Text-Content-Element einen Marker ###JAHR### definiere, der in diesem Beispiel ersetzt wird durch "2009". Denn müsste ich dann aber per Hand anpassen ;-(

    Vielen Dank für ein hilfreiche Antwort.

    Gruß vom Puntila


  • 1
  • gerupfter_hahn gerupfter...
    TYPO3-Anwärter
    0 x
    5 Beiträge
    0 Hilfreiche Beiträge
    31. 10. 2009, 23:05

    Versuche es mal so:
    [TS]marks {
    YEAR = TEXT
    YEAR {
    data = date : U
    strftime = %Y
    }
    }[/TS]

  • puntila puntila
    T3PO
    0 x
    9 Beiträge
    0 Hilfreiche Beiträge
    01. 11. 2009, 10:29

    Danke erst einmal. Leider bekomme ich es trotzdem nicht hin.

    Habe die Zeilen in mein Haupttemplate eingefügt. Muss das ganze vielleicht an eine bestimmte Stelle?

  • gerupfter_hahn gerupfter...
    TYPO3-Anwärter
    0 x
    5 Beiträge
    0 Hilfreiche Beiträge
    01. 11. 2009, 16:06

    Ne, das hier kommt in TS Setup. Ins html-Template kommt an die Stelle, wo die Jahreszahl verwendet werden soll, dieser Marker: ###year###

  • SLAng SLAng
    Flash Gordon
    0 x
    2757 Beiträge
    0 Hilfreiche Beiträge
    01. 11. 2009, 16:14

    puntila möchte das nicht ins HTML Template reinsetzen - da funktioniert es ja bereits -, sondern direkt ins CE.

    Dafür müsstest du dir eine Extension installieren. die nennt sich tscobj (Content Element From TypoScript).

    Dann ein Extensiontemplate anlegen mit folgendem Inhalt im Setup:

    [TS]lib {
    actYEAR = TEXT
    actYEAR {
    data = date : U
    strftime = %Y
    wrap = |
    }
    }[/TS]

    Dann das Plugin an gewünschter Stelle als CE einbauen und das lib actYEAR auswählen. Falls das Jahr in einem Text erscheinen soll, dann kannst du den Text ganz einfach teilen.

  • puntila puntila
    T3PO
    0 x
    9 Beiträge
    0 Hilfreiche Beiträge
    02. 11. 2009, 18:50

    Vielen Dank. Die Extension ist sehr interessant. Ich weiß aber nicht, wie ich sie als Lösung für einen Marker nutzen kann. Ich möchte innerhalb eines Content-Elements (z.B. innerhalb eines Fließtextes oder innerhalb einer Tabelle --- ohne zusätzliche Abstände!) einen dynamischen Marker verwenden.

    Wenn das mit dieser Extension geht, würde mich sehr interessieren wie.

    Ich habe mittlerweile eine sehr gute Lösung gefunden:

    [url]http://www.typo3.net/forum/list/list_post//93056/?page=1&sword=MARKER%20lib#pid340766[/url]

    [url]http://typo3.intervation.de/snippets/tt-content/flexible-marker-im-text.html[/url]

    Falls jemand das gleiche Problem haben solltem, hier der Teil den ich ins Setup meines Maintemplate eingefügt habe:

    [TS]temp.marks = cObject
    temp.marks {
    YEAR = TEXT
    YEAR {
    data = date : U
    strftime = %Y
    wrap = |
    }
    }

    ## Text-ContentElement anpassen:
    tt_content.text >
    tt_content.text = COA
    tt_content.text {
    10 = < lib.stdheader
    20 = TEXT
    20 {
    cObject = TEMPLATE
    cObject {
    template = TEXT
    template.field = bodytext
    marks < temp.marks
    }
    required = 1
    parseFunc = < lib.parseFunc_RTE
    editIcons = tt_content:bodytext, rte_enabled
    editIcons.beforeLastTag = 1
    editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.php:eIcon.bodytext
    prefixComment = 2 | Text:
    }
    }
    [/TS]

    Jetzt kann man im RTE (zumindest im Text-Element) mittels ###YEAR### das aktuelle Jahr im Frontend ausgeben lassen.

    Und hier dann mal ein ganz naiver Versuch einer Anpassung für HTML- bzw. Tabellen-Content-Elemente:
    [TS]## XXXX-ContentElement anpassen:
    tt_content.XXXX >
    tt_content.XXXX = COA
    tt_content.XXXX {
    10 = < lib.stdheader
    20 = TEXT
    20 {
    cObject = TEMPLATE
    cObject {
    template = TEXT
    template.field = bodytext
    marks < temp.marks
    }
    required = 1
    }
    }
    [/TS]
    XXXX steht entsprechend für "html" bzw. "table".

    Ich habe die parseFunc und die editIcons von oben (Text-ContentElement anpassen) einfach rausgeschmissen, weil ich die Zeilen nicht verstehe. Sind die wichtig? wofür stehen die?

    Die Zeile "10 = < lib.stdheader" macht im HTML-Element ärger. Sie sorgt anscheinend dafür, dass das Feld "Name" im Registerblatt "General" vom HTML-Content-Element als Header ausgegeben wird. Was ich eher störend empfinde.

    Mir ist aufgefallen, dass ich die Standardeinstellung des HTML-Elements im Setup des TypoScript Object Browser unter tt_content von TEXT auf COA umgestellt habe. Was bedeutet das? Ist das politisch korrekt? Was hat das für auswirkungen?

    Gruß,
    puntila

  • 1