Blog

RSS-Feeds einbinden

Mittlerweile gibt es einige Möglichkeiten, bei WordPress RSS Feeds einzubinden.

Beispielsweise kann man bei Themes, die Widgets unterstützen, das “hauseigene” Widget RSS benutzen. Damit lassen sich sehr einfach in der Sidebar RSS-Feeds oder Atom-Feeds ausgeben. Neben der RSS-Feed-URL kann man noch einen Titel angeben, der dann über den Feed-Links erscheint:

Wordpress RSS Widget

In WordPress vorab eingebautes RSS Widget für die Sidebar

Im obigen Beispiel habe ich mir dafür einen RSS-Feed bei der Twitter-Suche zusammengestellt. Man kann auf der Ergebnisseite bei Twitter die Sprache konfigurieren und diese Ergebnisseite dann als RSS-Feed-URL unter dem Link “Feed for this query” abspeichern (bzw. die Link-Adresse kopieren). Diese wird dann im RSS-Widget eingetragen, mit einem Titel versehen und gespeichert. Ab sofort taucht dann in der Sidebar (bzw. an der Stelle, an der das Widget integriert wurde) die Feed-Link-Liste auf.

RSS Feeds über SimplePie

Eine etwas komplexere aber dafür auch umfangreichere Möglichkeit, RSS-Feeds einzubinden, ist das Plugin SimplePie für WordPress. Genaugenommen werden dabei zwei Plugins benötigt, die beide auch über die Plugin-Datenbank von wordpress.org installiert werden können: SimplePie Core und SimplePie Plugin for WordPress.

Für das SimplePie Plugin muss nach der Aktivierung noch ein Ordner “cache” unter /wp-content/ angelegt (am besten über einen FTP-Client) und mit Schreibrechten (CHMOD 0777) versehen werden.

Das SimplePie Plugin ermöglicht es, RSS-Feeds auch auf Seiten oder innerhalb von Artikeln auszugeben, indem man PHP-Code mit den notwendigen Daten einbindet (dafür ist dann auch das Plugin Exec-PHP notwendig, welches das Verwenden und Ausführen von PHP-Code innerhalb von Artikeln und Seiten erlaubt*).

Ich habe beispielsweise einen Smartphone-Bestseller RSS-Feed von Amazon auf smartphonebox.de eingebaut – und das geht so:

Im Verzeichnis des SimplePie-Plugins gibt es einen Ordner “templates”. Dort kann man eigene Template-Dateien hinterlegen, die die Ausgabe des RSS-Feeds auf der WordPress-Seite festlegen. Für den Amazon-RSS-Feed habe ich folgendes Template angelegt und als “smartphonebox.tmpl” abgespeichert:

<div class="simplepie">
{IF_ERROR_BEGIN}<p>{ERROR_MESSAGE}</p>{IF_ERROR_END}
{ITEM_LOOP_BEGIN}
<p>{ITEM_DESCRIPTION}<hr style="clear:both;" /></p>
{ITEM_LOOP_END}
</div>

Dadurch wird ein Fehler ausgegeben, wenn bei der Verarbeitung des Feeds etwas nicht stimmt bzw. wird einfach der Inhalt des RSS-Feeds (item description) mit Absatz-Tags und einer Horizontalen Linie ausgegeben.

Die dazugehörige Seite, die ich in WordPress angelegt habe, hat diesen Inhalt:

<?php
echo SimplePieWP('http://www.amazon.de/rss/bestsellers/ce-de/569838/ref=pd_ts_rss_link',
array( 'items' => 10,
'strip_attributes' => false,
'strip_html_tags' => false,
'processing' => strip_rangordnung,
'enable_order_by_date' => false,
'template' => smartphonebox,
));
?>

Ich habe noch einige Parameter angegeben, die die Ausgabe bzw. vor allem die Verarbeitung der RSS-Datei von Amazon beeinflussen: ‘strip_attributes’ und ‘strip_html_tags’ => false sorgen dafür, dass sämtliche Attribute, also Klassen-Bezeichnungen und HTML-Kennzeichnungen erhalten bleiben.

Mit ‘processing’ kann man den RSS-Feed nach dem Einlesen und vor der Ausgabe auf der Seite bearbeiten. In diesem Fall schneide ich einen Teil aus dem RSS-Feed von Amazon heraus. Das passiert über die PHP-Datei “strip_rangordnung.php”, die ich im Ordner “processing”, ebenfalls innerhalb des SimplePie-Plugin-Verzeichnisses, hinterlegt habe. Diese sieht so aus:

<?php
class SimplePie_PostProcess    {
function item_description($s)
{
return preg_replace('/<br \/><br \/>\(Die Rangordnung[^\)]+\)/', '', $s);
}
}
?>

In diesem Fall wird das RSS-item “description” nach der Zeichenfolge “<br /><br />(Die Rangordnung” (und so weiter) durchsucht und gelöscht. Bei den Amazon-Feeds steht nämlich hinter jedem item der Satz “(Die Rangordnung wird stündlich aktualisiert. In der [...]-Liste finden Sie maßgebliche Informationen über die aktuelle Rangposition dieses Produkts.)”, was ich nicht x-mal wiederholt auf meiner Seite stehen haben möchte.

Danach gebe ich noch über ‘enable_order_by_date’ => false an, dass die Reihenfolge aus dem RSS-Feed einfach übernommen werden soll und keine Sortierung nach Datum erfolgt. Außerdem gebe ich mit dem Parameter “template” an, dass mein selbsterstelltes Template “smartphonebox” verwendet werden soll.

Man kann diese ganzen Parameter auch größtenteils unter den Plugin-Einstellungen von SimplePie for WordPress vornehmen. Bei meiner Vorgehensweise kann ich aber theoretisch mehrere unterschiedlich formatierte RSS-Feeds einbinden und muss mich nicht auf ein Format festlegen.

Nach dem Abspeichern der Seite (Titel nicht vergessen!) hat man es auch schon geschafft. SimplePie liest beim Aufruf der Seite automatisch den RSS-Feed von Amazon ein und gibt den Inhalt auf der Seite aus. Durch die Cache-Funktion passiert dies auch nur, wenn sich am RSS-Feed etwas geändert hat – diese Einstellung sollte man gerade bei umfangreichen RSS-Feeds mit vielen Inhalten und häufigen Änderungen nutzen.

Übrigens habe ich noch das Aussehen über die theme-CSS-Datei formatiert. Daher umgebe ich den item-Loop auch mit einem div-Container und der Klasse “simplepie”. Meine CSS-Formatierung für die Amazon-items sieht so aus – diese ist an mein Theme angepasst, kann also wahrscheinlich nicht 1:1 so übernommen werden:

.simplepie .riRssTitle { font-size:110%; }
.simplepie p img { border:0px none;vertical-align:-3px; }
.simplepie p .riRssContributor { float:right;margin:8px 0px; }
.simplepie .url, .simplepie .url:hover { text-decoration:none;border-bottom:0px none; }
.simplepie .url img { margin-right:8px;margin-bottom:8px; }

*) In den WordPress-Einstellungen unter “Schreiben” sollte unbedingt “WordPress soll falsch verschachteltes XHTML automatisch korrigieren” ausgeschaltet sein, damit Exec-PHP einwandfrei funktioniert. Außerdem muss der Artikel oder die Seite im HTML-Modus bearbeitet und gespeichert werden und nicht im WYSIWYG-Editor.

5 Kommentare

  1. blogoscoop » Rund um den Blog (08.02.10) am 8. Februar 2010 um 07:03

    [...] RSS-Feeds einbinden Feeds in WordPress einbinden. [...]

  2. Andreas vogel am 11. Februar 2010 um 10:55

    Hallo, ich möchte eigentlich lieber das “hauseigene” Widget RSS benutzen. Aber mein Problem: Wenn ein Nutzer hier auf einen RSS-Eintrag klickt, wird dieser nicht auf einem zusätzlichen Fenster gezeigt, sondern meine Seite ist weg. Wie kann ich eine Funktion target=blank für das RSS-Widget erzeugen?

  3. Thomas Langel am 11. Februar 2010 um 16:03

    In diesem Fall solltest du mal das Plugin Better RSS Widget ausprobieren. Dort kann man das “Link Target” (bei dir also “New Window”) einstellen.

  4. Rolf Berns am 13. März 2010 um 21:54

    Die Variante mit Simplepie gefällt mir gut. Die vorgefertigten Widgets sind zwar einfach und komfortabel zu nutzen, nur stösst man halt rasch an die Grenzen, sobald man etwas mehr will.

  5. Marco Nöchel am 22. Juli 2010 um 15:29

    Danke für den Artikel, jetzt habe ich es endlich geschafft eine Facebookseite in mein WordPress Blog einzubinden.

Kommentar schreiben




Newsletter & Updates

Trag' Dich ein, um die neuesten Artikel per E-Mail zu erhalten!

Die letzten Kommentare

  • dirk: Das ganze ist extremst praktisch muss ich sagen! Die Seiten die man damit aufbaut sind besser geordnet und es...
  • Chris: Hmmm… also ich hatte bisher immer den entgegengesetzten Effekt. Immer wenn ich Themes gesucht habe, fand...
  • Obertauern: Vielen Dank für diesen wirklich hilfreichen Artikel, ich habe schon oft versucht xammp zu installieren,...
  • Rhein Neckar Kreis: Ich sage mal Danke an die Wordprss Macher, je mehr “kleine” es nutzen und die Plugins...
  • Marcel: Es gibt dafür ein Plugin, nennt sich Page Link Manager. Einfacher gehts nun wirklich nicht mehr.

    Feedleser

    • Gesamt: 1150 (Letzten 31 Tage)
    • Maximum: 342 (6. March 2010)
    • Durchschnitt: 37