27 September 2017

Typo3 7.x+: Typo3-Link-Tags auch in HTML-Content-Elementen von fluid_styled_content

Früher (Typo3 bis 6.x) bzw. mit css_styled_content konnte man auf folgende Weise TypoLinks wie <link 1 - - "Linktitel">Linktext</link> auch in HTML-Elementen parsen:

tt_content.html.parseFunc.tags.link < lib.parseFunc.tags.link

Da man ab Typo3 7.x auch fluid_styled_content nutzen kann (und meiner Meinung nach auch sollte), funktioniert der Typoscript-Codeschnipsel nicht mehr. Um diese Funktionalität wiederherzustellen, müsst ihr folgendes machen (Vielen Dank auch
an Georg Ringer für seinen Input, der mich überhaupt erst darauf gebracht hat).
Zunächst müsst ihr das Template für das HTML-Element von fluid_styled_content (typo3/sysext/fluid_styled_content/Resources/Private/Templates/Html.html) überschreiben. 


Weitere Informationen zum Überschreiben von Standard-Templates findet ihr hier: https://docs.typo3.org/typo3cms/extensions/fluid_styled_content/7.6/Configuration/OverridingFluidTemplates/Index.html


Anschließend könnt ihr den vorhanden Code-Schnipsel ändern:



Vorher: 

<f:format.raw>{data.bodytext}</f:format.raw>


Nachher:

<f:format.htmlentitiesDecode>
    <f:format.html parseFuncTSPath="lib.parseFunc">
        {data.bodytext}
    </f:format.html>

</f:format.htmlentitiesDecode>


Erläuterung:

f:format.html parseFuncTSPath="lib.parseFunc" sorgt dafür, dass der HTML-Inhalt geparsed wird und die <link>-Tags durch entsprechende HTML-Tags ersetzt werden. 

f:format.htmlentitiesDecode wird im nächsten Schritt die HTML-Entitäten korrekt in sauberen HTML-Code umwandeln, damit diese auch vom Browser korrekt interpretiert werden. 


Et voilà!


-------------

Update am 31.05.2019:

Ab Typo3 8.x funktionieren zwar die <link>-Tags immer noch, aber es wurde ein neues System eingeführt. Siehe Link: https://docs.typo3.org/m/typo3/reference-typoscript/8.7/en-us/Functions/Typolink/Index.html#resource-references


D.h. dass die Verlinkungen nun so aufgebaut sind: 


<a href="t3://page?uid=1" title="startseite"></a> 


anstatt 


<link 1 - - "startseite"></link>



Von Haus aus ist der CKE so eingestellt, dass er diese a-Tags problemlos übernimmt. Wenn ihr weiterhin die klassischen link-Tags nutzen wollt/müsst, dann müsst ihr die Konfiguration vom CKE anpassen, damit dieser auch link-Tags akzeptiert. 
---------
Update am 08.09.2021
Ab TYPO3 8 hat sich glaube ich auch die Syntax verändert, mit der man die Templates überschreibt. Diese müsst ihr anpassen. Hier ein Beispiel (mit Beispielpfaden)

Vorher (TYPO3 7):
lib.fluidContent.partialRootPaths.200 = fileadmin/templates/fluid_styled_content/Resources/Private/Partials/
lib.fluidContent.templateRootPaths.200 = fileadmin/templates/fluid_styled_content/Resources/Private/Templates/
lib.fluidContent.layoutRootPaths.200 = fileadmin/templates/fluid_styled_content/Resources/Private/Layouts/

Nachher (TYPO3 8+, Veränderung fett markiert)
lib.contentElement.partialRootPaths.200 = fileadmin/templates/fluid_styled_content/Resources/Private/Partials/
lib.contentElement.templateRootPaths.200 = fileadmin/templates/fluid_styled_content/Resources/Private/Templates/
lib.contentElement.layoutRootPaths.200 = fileadmin/templates/fluid_styled_content/Resources/Private/Layouts/

9 Kommentare:

  1. Ich hab noch das Problem, dass im CKE der Link Tag beim Speichern entfernt wird.

    AntwortenLöschen
    Antworten
    1. Gerne :) Ich habe den Eintrag aktualisiert bezüglich CKE, da ich im Kommentar-Bereich keine Tags reinschreiben kann!

      Löschen
  2. Dieser Kommentar wurde vom Autor entfernt.

    AntwortenLöschen
  3. Hi,

    vielen Dank für deinen Blogpost.
    Leider steht im Update unten:
    < a/ > anstatt < /a > (ohne die Leerzeichen)

    So kann Typo3 bzw. fluid den Link natürlich nicht mehr parsen und scheitert. Das hat mir gerade eine ganze Weile Debugging eingebracht, bis ich es entdeckt hatte.
    Über eine Änderung im Blogpost würde ich mich freuen.

    Viele Grüße,
    Tobias

    AntwortenLöschen
    Antworten
    1. Hi Tobias,

      danke für den Hinweis! Ich habe den Fehler korrigiert.

      LG

      Tao

      Löschen
  4. Hallo Shentao,
    Könnte es sein das diese Lösung ab version 10 nichtmehr funktioniert?

    AntwortenLöschen
    Antworten
    1. Hi Sküller,

      soweit ich weiß muss man ab TYPO3 8 anstatt "lib.fluidContent" nun "lib.contentElement" nutzen um die Templates zu überschreiben.


      Viele Grüße,

      Shentao

      Löschen
    2. Eine Sache fällt mir noch ein: Es kann natürlich sein, dass sich das Template in TYPO3 10 verändert hat. Dann musst du dir auf jeden Fall das Originaltemplate von fluid_styled_content anschauen und entsprechend übernehmen und anpassen

      Löschen