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-Formatirung 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 = <link rel="alternate" type="application/rss+xml" title="example.com: Latest News" href="http://example.com/index.php?id={$xmlnewsfeed_id}type=100" />

Verwandte Artikel:

You can leave a response, or trackback from your own site.

Leave a Reply

Sorry, no posts matched your criteria.