269 Tipps rss | 7 Nutzer online

PHP: Externe RSS-Feeds in eigene Website einbauen

Jedes Blog und praktisch jede News-Seite macht ihre Inhalte über RSS-Feed verfügbar. Wie Sie Feeds anderer Websites auf Ihrer eigenen einbauen, zeigt dieser Beitrag.

Mit Hilfe von MagpieRSS können Sie RSS-Feeds bequem in Ihr Projekt einbinden. Das geht mit nur wenigen Zeilen Code, wie das folgende Beispiel-Skript zeigt:

<?php

require_once('include/rss_fetch.inc');

$url = 'http://www.xy_site.de/blog/rss/';

$objFeed = fetch_rss($url);

echo '<b>'.$objFeed->channel['title'].'</b><br/>';

foreach ($objFeed->items as $arrItem)

{

printf("<a href='%s'>%s</a><br/>", $arrItem['link'],

$arrItem['title']);

}

?>

Zunächst bindet require_once die Magpie-Bibliothek ein. Die Funktion fetch_rss holt die Daten des Feeds bei der zuvor festgelegten Adresse ab und speichert sie im Objekt $objFeed.

Mit einer foreach-Schleife gehen Sie durch die einzelnen Einträge und zeigen Sie in einem Link an. Natürlich können Sie an dieser Stelle statt des printf auch einen echo-Befehl verwenden. Das printf kommt hier nur der Übersichtlichkeit halber zum Einsatz.

So funktioniert MagpieRSS

MagpieRSS übernimmt aus den RSS-Daten alle Tags und speichert sie in einem Objekt. Das Objekt enthält vier Einträge: channel, items, image und textinput. Die Channel-Informationen rufen Sie direkt über das Objekt ab, in obigem Beispiel also $objFeed.

Die Items stecken in einem assoziativen Array. Der Name des Schlüssels entspricht dem RSS-Tag. Für den Textschnipsel zum Beispiel gilt der Eintrag $arrItem['description'].

MagpieRSS nimmt beim Einlesen der Daten keine Validierung vor. Falls Sie das Paket für interne RSS-Feeds verwenden, können Sie also beliebige andere Tags einsetzen. Auch in den Einträgen image und textinput stecken assoziative Arrays, in denen die Kinder der jeweiligen RSS-Tags abgebildet sind. MagpieRSS installieren Sie finden den kostenfreien RSS-Parser MagpieRSS unter der Adresse http://magpierss.sourceforge.net/

Laden Sie die aktuelle Version herunter. Die gibt es nur als .tar.gz-Datei. Wer MagpieRSS unter Windows ausprobieren möchte, braucht daher ein Zusatztool wie Winzip, Ultimate Zip oder das kostenlose 7-zip, um die Daten auszupacken.

Nach dem Entpacken kopieren Sie die Programmdateien

rss_catch.inc

rss_fetch.inc

rss_parse.inc

rss_utils.inc

sowie das Verzeichnis extlib in das Include-Verzeichnis Ihrer Anwendung. Fertig.

Ein Cache ist eingebaut

Um andere Server nicht bei jeder Aktualisierung der eigenen Seite zu behelligen, hat MagpieRSS einen Cache-Mechanismus eingebaut. Sofern die Rechte vorhanden sind, legt MagpieRSS ein Cache-Verzeichnis an - genau in dem Programmordner, von dem aus Sie die Bibliothek in Ihr Projekt eingebunden haben. Wenn Sie das nicht möchten, wählen Sie einen anderen Cache-Ordner. Das geht mit der Zeile

define('MAGPIE_CACHE_DIR', '/xyz/cachedir');

In jedem Fall muss der Server auf dieses Verzeichnis Schreibzugriff haben. Im Zweifelsfall verwenden Sie das tmp-Verzeichnis Ihres Servers.

Kleiner Nachteil: Wenn Sie Ihren Server mit anderen Benutzern teilen, haben Sie möglicherweise keinen Einfluss auf die Vergabe der Dateirechte im tmp-Verzeichnis. Unter Umständen können andere die Daten dann lesen. Aber solange es sich um öffentliche RSS-Feeds handelt, sollte das kein Problem sein.

Anzahl der RSS-Einträge begrenzen

Nicht immer ist es sinnvoll, die komplette Feed-Liste zu übernehmen - unter Umständen können das nämlich auch mal 50 oder 100 Einträge sein. Um die Anzahl der angezeigten Beiträge zu begrenzen, verwenden Sie am besten die Funktion array_slice():

<?php

define('NUMBER_OF_ENTRIES', 5);

require_once('include/rss_fetch.inc');

$url = 'http://www.sitexy.de/blog/rss/';

$objFeed = fetch_rss($url);

$objFeed->items = array_slice($objFeed->items, 0, NUMBER_OF_ENTRIES);

foreach ($objFeed->items as $arrItem)

{

printf("<a href='%s'>%s</a><br/>", $arrItem['link'],

$arrItem['title']);

}

?>

Die Funktion beginnt beim ersten Eintrag(0) im Array, schneidet die in

NUMBER_OF_ENTRIES gespeicherte Anzahl heraus und speichert sie wie-

der im Array. Durch das Array können Sie sich dann wieder wie gewohnt mit

foreach arbeiten.

Add to Del.icio.us


$objFeed->items = array_slice($objFeed->items, 0, NUM-
BER_OF_ENTRIES);
^^ funzt auch wenn man das - nach NUM rausnimmt. thx ;) für den
scripttip :D
[players24 | 18.07.2007]
Antworten


Danke für den Hinweis - wir haben das Listing korrigiert :)
[Martin Goldmann | 21.07.2007]
Antworten


Ich habe das Tutorial Externe RSS-Feeds in eigene Website einbauen
ausprobiert. Es funktioniert sehr gut. Ich habe nur ein Problem den
dazugehörigen Text einzufügen. Da ich leider nur begrenzte Ahnung von
php habe, wäre es sehr hilfreich, wenn sie mir den Code schreiben
könnten. Ich möchte das RSS meines Blog einbauen über feedburner. Wie
gesagt die Titel der Beiträge funtionieren schon. Danke im Voraus
[Sven Schindler | 27.06.2010]
Antworten


Bedingungen für die Kommentareingabe
Hinweis



Ihr Kommentar:


Name:


Copyright © Der Strassenprogrammierer 1999-2012   | Tippscout 5.0
Zurück Tipps Startseite