Typo3: Grafiken und Absätze im RSS-Feed von „tt_news“ anzeigen

Mittels der Typo3-Extension „tt_news“ lassen sich nicht nur Nachrichten in eine Typo3-Seite integrieren, diese können auch mittels RSS-Feed exportiert werden.

In der Dokumentation der Extension wird die Einrichtung eines RSS-Feeds unter „XML feeds from tt_news“ beschrieben.

Das Ergebnis ist ein RSS 2.0 Feed, ohne Grafik und ohne Absätze. Dieser Artikel beschreibt, wie dies zugefügt werden können.

Der in der Dokumentation aufgelistete TypoScript Code dient als Basis für die weiteren Ausführungen:

Konstanten:

plugin.tt_news {
  displayXML {
    rss2_tmplFile = EXT:tt_news/res/rss_2.tmpl
    xmlFormat = rss2
    xmlTitle = example.com: Latest News
    xmlLink = http://example.com/
    xmlDesc = Latest News
    xmlLang = en
    xmlIcon = fileadmin/tt_news_article.gif
    title_stdWrap.htmlSpecialChars = 1
    title_stdWrap.htmlSpecialChars.preserveEntities = 1
    subheader_stdWrap.stripHtml = 1
    subheader_stdWrap.htmlSpecialChars = 1
    subheader_stdWrap.htmlSpecialChars.preserveEntities = 1
    subheader_stdWrap.crop = 100 | ... | 1
    subheader_stdWrap.ifEmpty.field = bodytext
    xmlLastBuildDate = 1
  }
}

Darauf das die Werte für „xmlTitle“, „xmlLink“ „xmlDesc“, „xmlLang“ und „xmlIcon“ den lokalen Gegebenheiten angepasst werden müssen, wird hier nicht weiter eingegangen. Die Einträge für „title_stdWrap“ und „subheader_stdWrap“ können auch, wenn dort nichts geändert werden soll, ganz gelöscht werden, da sie die Defaults der Extension darstellen.

Setup:

xmlnews = PAGE
xmlnews {
  typeNum = 100
  10 >
  10 < plugin.tt_news
  10.pid_list >
  10.pid_list = {$plugin.tt_news.pid_list}
  10.singlePid = {$plugin.tt_news.singlePid}
  10.defaultCode = XML
  config {
    disableAllHeaderCode = 1
    additionalHeaders = Content-type:text/xml
    no_cache = 1
    xhtml_cleaning = 0
  }
}

Wichtig ist, das die Konstanten „pid_list“ und „singlePid“ in TypoScript definiert werden.

Anpassung XML-Template

Damit das XML-Template nicht bei einem Upgrade der Extension überschrieben wird, wird es in einem ersten Schritt eine Kopie erstellt:

cp -a typo3conf/ext/tt_news/res/rss_2.tmpl fileadmin/tpl/ext/ttnews_rss_2.tmpl

In das kopierte Template wird der Marker „###NEWS_IMAGE###“ in den „content:encoded“ Tag eingefügt, so dass dieser wie folgt aussieht:

<content:encoded><![CDATA[###NEWS_IMAGE### ###NEWS_CONTENT###]]></content:encoded>

Das komplette Template lässt sich hier herunterladen.

Eingebunden wird das kopierte HTML-Template mittels:

plugin.tt_news.displayXM.rss2_tmplFile = fileadmin/tpl/ext/ttnews_rss_2.tmpl

Grafik anpassen

Anstelle des Marker wird im RSS-Feed nun die Grafik des jeweiligen News-Artikels ausgegeben, wobei die Grafik nicht in ihrer Größe angepasst wird. Dies muss nun in TypoScript erfolgen.

Hierfür wird im Setup bei „plugin.tt_news.displayXML.image“ eine maximale Weite oder Höhe definiert:

plugin.tt_news.displayXML {
	image {
		file.maxW = 120
		#file.maxH = 90
	}
	xmlWebMaster = webmaster@example.com
}

Wichtig ist, dass entweder die maximale Weite oder die maximale Höhe angeben werden. Wenn beide Werte angegeben werden, werden die Grafiken fest auf diesen Wert skaliert. In den meisten Fällen ist sicherlich die maximale Weite angeben, wenn der RSS-Feed aber automatisch (z.B. mittels RSS.Graffiti) auf Facebook eingebunden werden soll, ist für maximale Höhe ein Wert von 80 oder mehr sinnvoll, da ansonsten die Grafiken von Facebook oft nicht eingebunden werden.

Die Angabe des Webmasters bei „xmlWebMaster“ kann bei technischen Problemen für die Kontaktaufnahme sinnvoll sein.

Nun benötigen die Grafiken noch eine absolute URL. Hierfür wird im Setup den relativen Links ein Präfix geben:

xmlnews.config.absRefPrefix = http://example.com/

Absatz-Formatierung erhalten

Ohne weitere Bearbeitung würde der gesamte News-Text als Fließtext, ohne jegliche Absätze, in den RSS-Readern erscheinen. Gerade bei längeren Texten kann dies dazu führen, dass der Text nicht mehr lesbar ist.

Abhilfe schafft hier der folgende Eintrag:

plugin.tt_news.displayXML.content_stdWrap.parseFunc < tt_content.text.20.parseFunc

Fertiges TypoScript

Somit ergibt sich folgende TypoScipt:
Konstanten:

plugin.tt_news {
  displayXML {
    pid_list = 47,11                          # Wert den lokalen Gegebenheiten anpassen
    singlePid = 42                            # Wert den lokalen Gegebenheiten anpassen
    rss2_tmplFile = fileadmin/tpl/ext/ttnews_rss_2.tmpl
    xmlFormat = rss2
    xmlTitle = example.com: Latest News       # Wert den lokalen Gegebenheiten anpassen
    xmlLink = http://example.com/             # Wert den lokalen Gegebenheiten anpassen
    xmlDesc = Latest News                     # Wert den lokalen Gegebenheiten anpassen
    xmlLang = de
    xmlIcon = fileadmin/tt_news_article.gif   # Wert den lokalen Gegebenheiten anpassen
    xmlLastBuildDate = 1
  }
}

Setup:

plugin.tt_news.displayXML {
	image {
		#file.maxW = 120
		file.maxH = 90
	}
	xmlWebMaster = webmaster@example.com  # Wert den lokalen Gegebenheiten anpassen
	content_stdWrap.parseFunc < tt_content.text.20.parseFunc
}

xmlnews = PAGE
xmlnews {
  typeNum = 100
  10 >
  10 < plugin.tt_news
  10.pid_list >
  10.pid_list = {$plugin.tt_news.pid_list}
  10.singlePid = {$plugin.tt_news.singlePid}
  10.defaultCode = XML
  config {
    disableAllHeaderCode = 1
    additionalHeaders = Content-type:text/xml
    no_cache = 1
    xhtml_cleaning = 0
  }
}

page.headerData.500 = TEXT
page.headerData.500.value =
Verwendete Schlagwörter: , , ,

9 Kommentare zu „Typo3: Grafiken und Absätze im RSS-Feed von „tt_news“ anzeigen

  1. Super Klasse.
    Danke für diesen Beitrag, ich war schon die ganze Zeit am Testen und Probieren nur hatte ich keine anständige Lösung gefunden.
    Nun wird alles genau so angezeigt wie es sein soll und das sogar in einer Nativen iPhone APP 🙂

    Im fertigen Setup fehlt jedoch xmlnews.config.absRefPrefix = http://example.com/

    Beste Grüße

    • Vielleicht bin ich ja mit meiner Reaktion einfach etwas zu spät dran, aber ich kann da gerade nicht nachvollziehen, dass da etwas nicht funktioniert. Sprich für mich sehen die Absätze formatiert aus.

  2. Damit Bilder auch vom im Firefox‘ eingebauten RSS reader (Live Bookmarks) angezeigt werden, kann folgender Codew im Template ttnews_rss_2.tmpl verwendet werden:

    <item>
    <title>###NEWS_TITLE###</title>
    <link>###NEWS_LINK###</link>
    <description>###NEWS_SUBHEADER###<![CDATA[<p></p>###NEWS_IMAGE###]]></description>
    <content:encoded><![CDATA[###NEWS_CONTENT###<p></p>###NEWS_IMAGE###]]></content:encoded>
    ###NEWS_CATEGORY###
    ###NEWS_AUTHOR###
    <guid>###NEWS_LINK###</guid>
    <pubDate>###NEWS_DATE###</pubDate>
    ###NEWS_RSS2_ENCLOSURES###
    </item>

    Wenn auch Links und HTML-Formatierungen angezeigt werden sollen, kann folgender Code im Typoscript Setup ergänzt werden:

    xmlnews.10.displayXML {
    subheader_stdWrap {
    crop = 300|…|1 | …

    # parse news subheader into <description> as (escaped) HTML
    stripHtml = 0
    htmlSpecialChars = 0
    htmlSpecialChars.preserveEntities = 1
    parseFunc < lib.parseFunc_RTE
    parseFunc.nonTypoTagStdWrap.encapsLines.nonWrappedTag >
    }
    }

    • Danke für die Ergänzung, die gibt doch dem RSS-Feed im Firefox gleich eine wesentlich ansprechendere Optik. Werde das auch noch oben im Artikel nachtragen.