Der Weg zum individuellen RSS-Feed

Textpattern stellt von Haus aus nur wenige Möglichkeiten zur Verfügung, den RSS-Feed seinem Geschmack anzupassen.

Für diesen Blog war es notwendig, Excerpt und Hauptartikel im RSS-Feed anzuzeigen. Leider kann in Textpattern nur eingestellt werden, ob der Excerpt oder der Hauptartikel ausgegeben wird.

Jakob aus dem Textpattern-Forum hat mich auf den Artikel Txp: Creating Custom RSS Feeds von Isaac Bowen aufmerksam gemacht.

Mittels einer Artikelliste ist es auf einfache Art möglich, einen völlig individuellen RSS-Feed zu generieren.

Damit dieser Feed zum Schluss auch validiert, habe ich noch einige Änderungen vorgenommen, unter anderem auch solche, welche nur für uns Europäer notwendig sind.

Vorbereitung

Vorab wird das Plugin Mg_setheader von Mike benötigt. Dieses dient dazu, dass die Seite mit dem richtigen MIME-Type ausgeliefert werden kann.

Seitenvorlage erstellen

Als Erstes muss eine leere Seitenvorlage angelegt werden. In diesem Beispiel heisst sie «myrss». Danach gilt es, eine neue Sektion mit gleichem Namen zu erstellen und dieser die Seite «myrss» als verwendete Seitenvorlage zu zu teilen.

Feed-Struktur festlegen

Nun muss die Seite «myrss» geöffnet werden und mit folgenen Zeilen «gefüttert» werden:

<txp:mg_setheader name="Content-Type" value="application/rss+xml" /><?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:content="http://purl.org/rss/1.0/modules/content/">
 <channel>
  <generator>http://textpattern.com/</generator>
  <title><txp:site_name /></title>
  <link><txp:link_to_home /></link>
<atom:link href="" rel="self" type="application/rss+xml" />
  <description></description>
  <pubDate><txp:php>setlocale(LC_ALL, 'en_US.UTF-8'); echo strftime( "%a, %d %b %G %T %z" );</txp:php></pubDate>
  <txp:article_custom allowoverride="0" form="myrss" limit="10" pgonly="0" section="" />
 </channel>
</rss>

Hier gibt es schon die ersten Abweichungen zu der eingangs erwähnten Anleitung: <atom:link href="" rel="self" type="application/rss+xml" /> wurde zusätzlich eingefügt (der Pfad muss natürlich angepasst werden), ebenso gibt es mit <description></description> eine Seitenbeschreibung zum Blog, welche eingesetzt werden muss.

Zum Kernstück meiner Änderungen gehört die Zeile <txp:php>setlocale(LC_ALL, 'en_US.UTF-8'); echo strftime( "%a, %d %b %G %T %z" );</txp:php>. Da die Datumsausgabe als gültiges RFC 1766-Format ausgegeben werden muss, wird der «Local-Name» auf en_US gesetzt.
Um eine nach RFC 822 gültige Zeitzone zu generieren, wird innerhalb der strftime die Ausgabe auf %z geändert.
Zu guter Letzt muss in txp:article_custom@ unter @section="" die gewünschte Sektion angegeben werden, welche im Feed enthalten sein soll.

Feed-Artikel zusammenstellen

Als Letztes wird ein «Baustein» mit dem Typ «article» – hier im Beispiel «myrss» – mit folgendem Inhalt benötigt:

<item>
 <title><txp:title /></title>
 <description>
  <![CDATA[
  <txp:excerpt />
  <txp:body />
  ]]>
 </description>
 <link><txp:permlink /></link>
 <pubDate><txp:posted format="%a, %d %b %G %T %z" /></pubDate>
 <dc:creator><txp:author /></dc:creator>
 <guid><txp:permlink /></guid>
</item>

Dieser Inhalt kann natürlich beliebig angepasst werden und lässt keine Wünsche offen. Kreativität ist angesagt.

Bereit zum Einsatz

Fertig. Der Feed kann nun unter «domain.tld/myrss» ausgetestet werden.

Geschrieben von

Als typografischer Gestalter in der eigenen Grafikagentur erzähle ich aus meinem Agenturleben. Neue Apps welche mir den Alltag erleichtern können schaue ich mir immer wieder gerne an. Zur Entspannung geniesse ich die Zeit mit meinem Big Green Egg® und erzähle dazu gerne Grillgeschichten hier oder in der Community Green Grillers.

1 Kommentar

Schreibe eine Antwort zu Markus Merz Antwort abbrechen

Close