sauberes RSS in tt_news und timtab
Die Blog-Extension timtab für TYPO3 basiert ja bekanntlich unter anderem auf der Extension tt_news. Demzugrunde liegt auch der Newsfeed der wahlweise über RSS (2.0, 0.9) und/oder Atom geregelt werden kann.
Mein Ziel war (ist) es, speziell den RSS 2.0 Feed etwas auf dem neuesten Stand zu bringen. Primär ging es mir darum, den gesamten News/Blog Eintrag im Feed darzustellen. Dazu müssen mehrere (kleine) Probleme bewältigt werden.
Zunächst sieht die RSS Spezifikation kein separates Element vor, um den gesamten Text darzustellen. Jedoch gibt es explizit die Möglichkeit in der Version 2.0, den Feed über eigene Namespaces zu erweitern. Wordpress ab Version 2 benutzt diese Möglichkeit und erweitert den Namensraum um den Bereich "content".
Im tt_news Template rss_2.tmpl sieht das dann so aus:
<!-- ###TEMPLATE_RSS2### begin -->###XML_DECLARATION###
<rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>Das ermöglicht die Benutzung des "content:encoded" Elements, indem man entweder den entity-encoded oder den via CDATA escapeden Inhalt des News/Blog Posts anzeigen lassen kann.
Ein weiterer Stolperstein stellt (je nach persönlicher Fittness in TYPO3) der fehlende Marker für das RSS Template dar. Dazu ist zu sagen, dass der Marker durchaus existiert, jedoch schlicht nicht im Template benutzt wird. Der Marker ist ###NEWS_CONTENT###. Damit man diesen so wie er ist benutzen kann, muss man ihn wie oben erwähnt über CDATA escapen.
<![CDATA[###NEWS_CONTENT###]]>und in die neuen Content Elemente packen.
<content:encoded><![CDATA[###NEWS_CONTENT###]]></content:encoded>Die Lösung mit dem "manuellen" Escapen ist nicht sehr sauber - aber sehr einfach und unkompliziert. Eine bessere Lösung könnte zum Beispiel sein, den Text direkt über das tt_news Plugin zu escapen. Einen entsprechenden Patch werde ich die Tage mal fertig machen und an Rupert schicken. Vielleicht schafft es die Änderung in den nächsten Release.
Mein gesamtes rss_2.tmpl sieht übrigens jetzt so aus:
<!-- ###TEMPLATE_RSS2### begin -->###XML_DECLARATION###
<rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<!-- ###HEADER### begin -->
<title>###SITE_TITLE###</title>
<link>###SITE_LINK###</link>
<description>###SITE_DESCRIPTION###</description>
###SITE_LANG###
<image>
<title>###SITE_TITLE###</title>
<url>###IMG###</url>
<link>###SITE_LINK###</link>
<width>###IMG_W###</width>
<height>###IMG_H###</height>
<description>###SITE_DESCRIPTION###</description>
</image>
<generator>timtab - blogging with TYPO3</generator>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
###NEWS_COPYRIGHT###
###NEWS_WEBMASTER###
###NEWS_MANAGINGEDITOR###
###NEWS_LASTBUILD###
<!-- ###HEADER### end -->
<!-- ###CONTENT### begin -->
<!-- ###NEWS### begin -->
<item>
<title>###NEWS_TITLE###</title>
<link>###NEWS_LINK###</link>
<description>###NEWS_SUBHEADER###</description>
<content:encoded><![CDATA[###NEWS_CONTENT###]]></content:encoded>
###NEWS_CATEGORY###
###NEWS_AUTHOR###
<pubDate>###NEWS_DATE###</pubDate>
</item>
<!-- ###NEWS### end -->
<!-- ###CONTENT### end -->
</channel>
</rss><!-- ###TEMPLATE_RSS2### end -->