RSS-Feeds einbauen
News für die Website

DeveloperIT-ProjekteSoftware

Viele Newsdienste bieten RSS-Feeds ihrer Nachrichten an, die Sie kostenlos in Ihre Website integrieren können. Internet Professionell zeigt, wie Sie News mit PHP einbauen und an Ihre Site anpassen.

Darum geht es

RSS-Feeds einbauen

RSS-Newsfeeds liegen im XML-Format vor und lassen sich nicht direkt in HTML einbinden. Ein wenig Programmier-Know-how ist nötig ? oder die passenden Tools. In Ausgabe 8/2004 haben die Internet-Professionell-Experten Ihnen einen breiten Überblick über das Thema RSS gegeben. Dieser Workshop zeigt ergänzend, wie Sie RSS-News nahtlos in Ihre Seiten integrieren. Dabei kommen PHP und der RSS-Reader Magpie zum Einsatz. Magpie dient als Bindeglied zu PHP.

Wenn Sie keinen FTP-Zugriff auf den Server haben, beispielsweise wenn Sie Ihr Weblog bei einem Blog-Dienstleister hosten lassen, gibt es einen Trick, bei dem ein externes PHP-Skript zum Einsatz kommt. Wie das funktioniert, lesen Sie weiter unten. Den kompletten Code finden Sie auf der Heft-CD.


Systemvoraussetzungen

RSS-Feeds einbauen

Magpie verwendet die Funktion array_change_key_case(), die erst ab PHP 4.2 verfügbar ist. Eine ältere PHP-Version generiert die folgende Fehlermeldung:

Fatal error: Call to undefined function: array_change_key_case() in /home/username/www/feed/magpierss-0.7/rss_parse.inc on line 149

Sie benötigen daher mindestens PHP in Version 4.2 auf dem Server. Es gibt zwar einen Workaround, der aber zumindest im Test nicht zuverlässig funktioniert hat. Um das Problem zu umgehen, wird empfohlen, die folgenden Zeilen in der Datei rss_fetch.inc hinzuzufügen, beispielsweise nach den einleitenden Kommentaren:

define("CASE_UPPER",1);
define("CASE_LOWER",0);
function array_change_key_case($array,$case=CASE_LOWER)
{
if ($case=CASE_LOWER)
  $cmd=strtolower;
elseif ($case=CASE_UPPER)
  $cmd=strtoupper;
foreach($array as $key=>$value) {
$output[$cmd($key)]=$value;
}
return $output;
}

Mit PHP Version 4.2 oder höher funktioniert das Programm ohne Anpassungen problemlos. Informationen über die PHP-Version erhalten Sie mit dem Befehl phpinfo():


phpinfo();
?>

Speichern Sie diese Textdatei unter dem Namen phpinfo.php ab, laden Sie sie per FTP in ein Verzeichnis auf Ihrem Webserver und rufen Sie diese Datei dann im Webbrowser auf. Sie erhalten daraufhin einen ausführlichen Report.


Installation von Magpie

RSS-Feeds einbauen

Laden Sie die aktuelle Version von Magpie RSS-Reader von der Heft-CD oder magpierss.sourceforge.net. Entpacken Sie das Archiv in ein Verzeichnis Ihrer Wahl und kopieren Sie anschließend alle Dateien per FTP in ein Verzeichnis auf Ihrem Webserver. Die Dateistruktur muss dabei erhalten bleiben. An den Rechten brauchen Sie nichts zu ändern.

Die Installations-Dokumentation finden Sie im Hauptverzeichnis /magpierss-0.71 unter Install. Magpie wird standardmäßig ein Verzeichnis cache in dem Verzeichnis anlegen, das auch Ihr PHP-Skript enthält. Falls der Webserver dafür keine ausreichenden Rechte hat, was laut Dokumentation öfter vorkommt, muss das Cache-Verzeichnis von Hand angelegt werden und mit chmod die Rechte 775 erhalten ? weiter gehende Informationen dazu finden sich in der Install-Datei.


Feed me with PHP-Code

RSS-Feeds einbauen

Als Nächstes benötigen Sie ein wenig PHP-Code, um den Newsfeed Ihrer Wahl anzuzapfen. Zunächst rufen Sie den Newsfeed auf, um sich zu informieren, welche Variablen zur Verfügung stehen. Im Beispiel verwendet Internet Professionell den Feed www.drweb.de/rss.xml.

Die benötigten Felder sind title, link und description. Erstellen Sie dazu eine Textdatei mit der Endung nachrichten.php und notieren Sie den Code aus dem Kasten »Listing 1«.

In der ersten Zeile geben Sie den Pfad zur Datei rss_fetch.inc an.

require_once('rss_fetch.inc');

Im Beispiel befinden sich sowohl die Datei nachrichten.php als auch die rss_fetch.inc im selben Verzeichnis, so dass keine Verzeichnisangabe notwendig ist. Wenn sich die Datei nachrichten.php eine Verzeichnisebene höher befindet, müssen Sie das Verzeichnis mit angeben, in dem Magpie RSS installiert ist:

require_once ('magpierss/rss_fetch.inc');

In der ersten Zeile definieren Sie mit der Variablen $url die Quelle des Newsfeeds:

$url = ' http://www.drweb.de/rss.xml';

Das PHP-Skript liest den unter $url angegebenen Newsfeed, der in einem Array vorliegt, aus und präsentiert ihn mit Hilfe des PHP-Befehls echo als HTML-Code.


In Form bringen

RSS-Feeds einbauen

$title

Wenn Sie die Datei nachrichten.php im Browser aufrufen, sehen Sie bereits die Inhalte des Newsfeeds, allerdings noch sehr ungestaltet in reinem HTML. Um das Ganze in Form zu bringen, braucht es noch ein wenig Fein-Tuning.

Erstellen Sie nun eine HTML-Datei mit PHP-Endung, die Sie nach Ihren Wünschen layouten. Sie können hier beispielsweise Illustrationen, ein Grundlayout und einleitenden Text eingeben und die Formate in eine separate CSS-Datei auslagern.

An der Stelle, wo Sie die externen News sehen wollen, fügen Sie nun den bereits erstellten PHP-Code ein (Datei nachrichten_formatiert.php).
Um die Links gelb zu unterlegen, wurde im Stylesheet ein eigener Style definiert und mit aufgerufen. Bitte beachten Sie, dass Sie innerhalb eines PHP-Skripts nur einfache Anführungszeichen ' verwenden können, keine " wie im HTML-Code sonst üblich, weil diese in PHP bereits belegt sind und in diesem Fall eine Fehlermeldung generieren würden.

Nicht jeder Newsfeed hat das Feld description mit Inhalt gefüllt. Wenn Sie einen anderen Newsfeed aufrufen, beispielsweise muenchen.opusforum.org/ins/index.rss, so werden nur die verfügbaren Inhalte angezeigt.

Sie können das Feld description auch ganz weglassen, wenn Sie nur die Überschriften anzeigen lassen wollen ? oder dürfen, abhängig von den Bedingungen des Urhebers:

foreach ($rss->items as $item) {
$title = $item[title];
$link = $item[link];
echo "

  • \n";
    }
    echo "

    $title


    Mehrere Feeds verbinden

    RSS-Feeds einbauen

    Sie können auch mehrere Feeds in eine HTML-Datei einbinden, indem Sie für jeden Feed einen eigenen PHP-Codeblock definieren. Durch die sequenzielle Abarbeitung des PHP-Codes macht es im Prinzip nichts, wenn die Variablennamen identisch sind. Eleganter ist es allerdings, jedem Feed seine eigenen Variablennamen zu geben, beispielsweise $url_1, $url_2, $title_1, $title_2.


    Die Alternative: Feed2JS

    RSS-Feeds einbauen

    Sollten Sie keinen Serverzugriff haben oder keinen PHP-Code verwenden können, weil Sie zum Beispiel eine Blog-Hosting-Lösung wie Typepad, Blogger et cetera einsetzen, müssen Sie dennoch nicht auf den Import von Feeds verzichten. Feed2JS (
    jade.mcli.dist.maricopa.edu/feed) setzt auf Magpie auf und ermöglicht es Ihnen, Javascript-basiert den gewünschten Feed einzubinden.

    Um Ihren eigenen Code zu generieren, klicken Sie auf der Feed2JS -Website auf den Menüpunkt Build und geben bei URL die Web-Adresse des Newsfeeds ein. Dann haben Sie noch die Möglichkeit, einige Optionen einzustellen, wie Anzeige des Channels, Anzahl der darzustellenden News-Items und ob die Beschreibung angezeigt werden soll, außerdem die Anzeige des jeweiligen Datums und eventuell die Anzeige in einem neuen Fenster bei Klick auf einen Link.

    Mit Preview the feed können Sie das Ergebnis begutachten und noch ändern. Wenn Sie zufrieden sind, klicken Sie auf Generate JavaScript. Sie erhalten dann den Code in einem Formularfeld, wo Sie ihn kopieren und in einen Eintrag in Ihr Weblog posten können, zum Beispiel:

    Im Anschluss daran gibt es einen noscript-Teil für Anwender, die Javascript abgeschaltet haben ? in diesem Fall wird ein Link auf den verarbeiteten RSS-Feed auf dem Feed2JS-Server bereitgestellt.

    Wenn Sie für alle üblichen Textbestandteile wie Text, Listenpunkte und Links bereits CSS-Styles hinterlegt haben, passen die importieren News bereits zum Outfit Ihrer Seite.

    Sie können das Design aber noch explizit anpassen. Dafür bietet Feed2JS unter dem Menüpunkt Style noch einige Formatierungsoptionen. Sie können entweder aus bereits fertigen Styles wählen oder Ihren eigenen Style designen. Die CSS-Klassen, die Feed2JS verwendet und die Sie mit Formaten hinterlegen können, sind:

    rss_box ? Kasten, Ränder, Hintergrund
    rss_title ? Titel und Link-Stil, mit Optionen rss_title a:link, rss_title a:hover et cetera für Rollover-Effekte
    rss_items ? ungeordnete Liste

      ?

    für die einzelnen Feed-Items, für Zeichen- und Zeilenabstand
    rss_item ? Anzeige von Beschreibung und Titel jedes List-Items

  • ?
  • und der Channel-Beschreibung
    rss_item a: ? Variante für Item-Titel und Link-Stil
    rss_date ? Anzeige der Posting-Daten jedes Eintrags


    Urheberrechtliche Aspekte

    RSS-Feeds einbauen

    Newsfeeds lassen sich nahtlos und vergleichsweise einfach in jedes Internet-Angebot einbinden. Aber ist das auch immer erlaubt? Internet Professionell stellt klar, welche News Sie übernehmen dürfen und welche Einschränkungen es gibt.

    Nach dem Einbinden der Newsfeeds zeigt ein Blick in den Quellcode keine Spur mehr von XML oder PHP und auch nicht die Quelle des Newsfeeds, und auf der fertigen Seite ist die Quelle dank optisch nahtloser Einbindung unter Umständen ebenfalls nicht mehr zu erkennen.

    Ärgerlich und unter Umständen sogar teuer wird es, wenn Sie dabei das Copyright des Urhebers nicht beachten. Informieren Sie sich vor dem Einbinden fremder Inhalte in Ihre Website über die Bedingungen, die der Urheber der Daten an dieses Einbinden knüpft. Sollten Sie auf der Website keinen Hinweis finden, kontaktieren Sie den Urheber, um die Bedingungen zu klären. Es kann zum Beispiel sein, dass das Lesen via Newsreader gestattet ist, nicht aber das Einbinden der Inhalte in eine Website. Bedenken Sie auch, dass Sie beim Anbieter des Newsfeeds Traffic generieren, insbesondere wenn Sie eine stark frequentierte Website haben. Gerade große Informationsanbieter wie Zeitungen haben strikte Bedingungen für die Einbindung ihrer Inhalte auf anderen Seiten. Häufig ist dort nur das Einbinden von Schlagzeilen gestattet. Oder das Einbinden ist an eine Quellen-Nennung geknüpft.

    Andere Urheber schließen eine kommerzielle Verwertung ihrer Inhalte aus ? und diese kommerzielle Verwertung liegt beispielsweise schon vor, wenn Sie auf Ihrer Website Werbebanner platzieren. Profitorientierte Webmaster haben längst herausgefunden, dass sich mit dem Content anderer bequem Geld machen lässt. Bequeme Syndication-Tools sind mittlerweile in großer Zahl verfügbar, wie zum Beispiel Reblog (www.reblog.org), ein Tool für Nutzer, die nicht bloggen, sondern bloggen lassen. Dies führt dazu, dass immer mehr Informationsanbieter keinen »Full Feed« mehr bieten, sondern nur noch Teaser und man auf die Original-Website klicken muss, um den ganzen Text lesen zu können ? was für die Anwender von Newsreadern einen gewissen Komfortverlust bedeutet.

    Inhalte unter CCL-Lizenz stellen

    Um die Verwendung eigener Inhalte auf fremden Seiten zu regeln, bietet sich beispielsweise die Erteilung einer Creative Commons License (creativecommons.org/licenses/by/2.0/de) an.

    Auf der Website Creativecommons.org finden Sie verschiedene Variationen von Lizenzen in den gebräuchlichsten Sprachen, auch für Bild und Ton.

    Alle Listings zum Workshop finden Sie auf der Heft-CD und unter listings.internet-pro.de.