all benchmark related Xtreme systems

RSS News Feed - Einbindung und Programmierung mit PHP

RSS Symbol

So gut wie jede Website im Internet besitzt heutzutage eine Funktion, um ihre User und Besucher immer auf den neuesten Stand zu halten. Die Rede ist von den sogenannten RSS News Feed. Folgender Hilfe-Guide zum Thema, führt sie Schritt für Schritt durch die Möglichkeiten, die ihnen zu Verfügung stehen und zeigt ihnen eine einfache Anleitung zum Umsetzen des Ziels, RSS News Feed auf einer Website geparst darzustellen.

Inhaltsverzeichnis

Externe RSS Reader - Die Programme

Mit einen kleinen Symbol RSS Symbol ausgezeichnet, lassen sich, entweder durch externe RSS Reader, auch RSS Aggregatoren genannt, oder durch eine interne Lösung, News in Form von einfachen Links, oder Schlagzeilen darstellen. Die unten aufgeführten externen RSS-Reader sind alles Programme, die ganz normal installiert und anschließend auf ihrem Computer zuhause ausgeführt werden können. Sie greifen die XML- Dateien einer Website ihrer Wahl auf, die sogenannten RDF und geben sie, für sie lesbar, dynamisch und immer aktuell aus..

Externe RSS Reader sind, zum Beispiel:

Weitere RSS Reader finden sie auch im RSS-Verzeichnis.de, sowie einer genaueren Auswahl des Betriebssystems.

Seitenanfang

Interne RSS Reader - Server, Homepage, PHP

Mit internen RSS/RDF Readern, sieht es schon ein wenig komplizierter aus. Die Bezeichnung "intern" deutet darauf hin, dass es als "Sprache" oder "Fähigkeit" auf einem Server abgelegt wird, wodurch es einer Website ermöglicht wird, RSS, bzw. die ".rdf"- Dateien zu verstehen und ausgeben zu können.

Grundsätzlich muss also eine Programmiersprache verwendet werden, um mit dem Server zu kommunizieren. In unserem Fall benutzen wird schlicht und ergreifend PHP. Nun mag eingeworfen werden, es gäbe bereits eine einfachere Lösung, um News-Feed auf der Homepage anzuzeigen. Man nutzt einfach Javascript. Doch einen Gedanken müssen sie dringend im Kopf behalten.

Die Arbeit wurde bereits von jemand anderes getan. Sie "benutzen" einfach einen Code-Fetzen, um ihre Seite zu bereichern und müssen unter Umständen ein deutlich sichtbares Copyright- Zeichen am Ende der Schlagzeilen hinnehmen. Außerdem wird ihre gestalterische Freiheit genommen, sowie ein explizites Anpassen an ihre individuelle Homepage. Wer dennoch genau danach sucht, oder sich nicht weiter bemühen will, findet in dieser Liste einige Anbieter zum Thema, Javascript und RSS:

Aber zurück zu PHP. Das kommende Beispiel orientiert sich an dieser Website. Direkt auf der Newsseite von ABRX-SYS, können sie rechts kleine Listen erkennen, die dynamisch die Schlagzeilen von der Internetseite Hartware.net und anderen abgreift. Wie wir das genau angestellt haben, was man beachten muss, und was sie dringend tun sollten, klärt folgender Abschnitt.

Seitenanfang

Unser Beispiel - Anleitung und Wissen

Den ersten Schritt, den sie tun sollten, ist sich zu vergewissern, dass sie die News Feed in ihre Website einbinden dürfen. Hartware.net weist auf einer Unterseite explizit darauf hin, eine Email zu verfassen, wo sie das Skript, bzw. die RSS-Funktion verwenden werden. Sichern sie sich also immer vorher ab, was und wie sie etwas tun möchten, um so Ärger gleich im Voraus zu umgehen. Heise Online ist ebenfalls mit Hinweisen ausgestattet, und erlaubt ihnen, die breit gefächerte Auswahl an News einzubinden. Beide Seiten besitzen ein gemeinsames Kriterium: target="_blank" - Das Öffnen der Links in einem eigenen Fenster. Dazu aber später mehr. Widmen wir uns nun der php.ini.

php.ini - Wichtige Einstellungen

Grundlegend ist es ein unumgehbarer Schritt, die Einstellungen, des auf dem Server installierten PHP zu kontrollieren, sei es als CGI, oder Modul. Hierzu können sie zunächst eine einfache PHP-Seite erstellen.

Öffnen sie ihr Website- Erstellungsprogramm (z.B. Dreamweaver CS3 - wird hier verwendet) , oder einfach das Notepad. Und geben sie folgende Zeilen ein.

<?php

phpinfo();

?>

Speichern sie die Datei als phpinfo.php, und laden sie die Seite auf ihren Server. Ein solches Bild sollte sich nun auf ihrem Browser abzeichnen.

PHPinfo.php PHPinfo.php PHPinfo.php PHPinfo.php PHPinfo.php

Die Einstellungen, die sie absolut brauchen, damit ihr Vorhaben funktioniert, sind folgende Ausdrücke.

Sollte eine dieser Einstellungen nicht dem entsprechen wie angezeigt, müssen sie eine php.ini Datei erstellen mit genau dem Inhalt, wie oben aufgelistet. Dies geht relativ schnell von der Hand. Texteditor auf, die Ausdrücke einfügen, und als php.ini abspeichern. Nach dem Upload auf ihren Server, hat sich der Inhalt der phpinfo.php geändert und sie können fortfahren, sich über den eigentlichen PHP-Code zu machen.

Seitenanfang

MagpieRSS 0.72 - das PHP Skript

Schritt 1

Lädt man sich MagpieRSS 0.72 herunter, ist die komplette Anleitung auf English, bietet aber bereits einen leicht verständlichen "Schnelleinstieg". MagpieRSS ist ein sehr kleiner und leistungsfähiger RSS-Parser für PHP, der allerdings nicht hundertprozentig "fehlerfrei" ist. Zunächst wollen wir nun, die benötigten Dateien auf den Server laden, um die Funktionen von MagpieRSS nutzen zu können.

  1. Öffnen sie die magpierss.tar und entpacken sie es in ein Verzeichnis ihrer Wahl. Für die Kürze der Zeit reicht der Desktop völlig.
  2. Aus dem nun erstellten Ordner müssen sie den Ordner namens "extlib" inklusive der darin enthaltenen Datei "Snoopy.class.inc", und die Dateien, "rss_cache.inc", "rss_fetch.inc", "rss_parse.inc", und "rss_utils.inc" in einen anderen Ordner kopieren, den sie einfach "magpierss" nennen.
  3. Laden sie den Ordner "magpierss" in ihr Stammverzeichnis auf dem Server, oder genau dort, wo die gewünschte Datei mit der RSS-Fähigkeit entstehen soll.
  4. Sie brauchen nebenbei bemerkt auch einen Ordner mit dem Namen "cache" im gleichen Verzeichnis, wie "magpierss". Legen sie ihn aber nur an, wenn der Ordner nicht automatisch erscheinen will, wenn das PHP-Skript erfolgreich ausgeführt wurde.
  5. Das wars. Nun geht's ans Eingemachte.

Schritt 2

Der Server ist nun vorbereitet und wartet nur auf den Einsatz eines passenden PHP-Codes. MagpieRSS zeigt in der Einleitung, ein ganz passables Skript:

<?php

define('MAGPIE_DIR', '../');
require_once(MAGPIE_DIR.'rss_fetch.inc');

$url = $_GET['url'];

$rss = fetch_rss( $url );
echo "Channel: " . $rss->channel['title'] . "<p>";
echo "<ul>";
foreach ($rss->items as $item) {
$href = $item['link'];
$title = $item['title'];
echo "<li><a href=$href>$title</a></li>";
}
echo "</ul>";
?>

Da dieses gezeigte Skript leider nicht ganz so toll funktioniert, wie sie sich vielleicht vorstellen, zeigen wir ihnen nun, wie man Schritt für Schritt zum passablen Code kommt.

Seitenanfang

Die Modifizierung - Der Weg ist das Ziel

Das oben genannte define 'MAGPIERSS_DIR' ist für das definieren des Verzeichnisses gedacht, um auch weite Ordnerbäume übersichtlich zu gestalten. Sie können, wenn es im gleichen Verzeichnis liegt auch einfach eingeben:

<?php

require_once('magpierss/rss_fetch.inc');

$url = $_GET['url'];

...

Damit sie nicht gleich zu Beginn den Überblick verlieren, kürzen wir das PHP-Skript auf einfache Art und Weise. Da wäre, zum Beispiel, der Codeauszug mit der "echo "Channel: " . $rss->channel['title'] . "<p>";" Bezeichnung. Wenn das Skript ausgeführt wird, erscheint über den geparsten Schlagzeilen, der Titel des RSS-Kanals, bzw. des Anbieters, was allerdings sehr unhübsch aussehen kann. Also weg damit. Nun kommt noch etwas hinzu, dass je nachdem zu großen Problemen führen kann.

Die $_GET- Variable. Testen sie das PHP-File, wird bei ihnen Nichts angezeigt werden. Oder das "Error_Reporting" (falls aktiviert) sagt ihnen zumindest, dass "...fetch_rss was called without a url...". Sehen sie nicht einmal einen Error- Bericht, fügen sie bitte in der ersten Zeile des PHP-Skripts error_reporting(E_ALL); ein.

Quakenet zeigt ein sehr gutes Tutorial, in dem $_GET genauestens definiert wird. Kurz: $_GET ruft GET-Variablen aus der jeweiligen URL ab, und erzeugt damit die Array-Elemente. Um zu testen, ob die von ihnen gewünscht URL derartige Elemente besitzt, benutzen sie einfach folgendes Skript.

<?php
if (isset($_GET['URL ihrer Wahl'])) {
     echo "GET-Variable!"
} else {
     echo "Niete. Nichts vorhanden!";
}
?>

Handelt es sich also, wie z.B. bei der URL von Hartware.net oder Heise Online, nicht um eine GET-Variable, schreiben sie das Skript ganz einfach wie folgt:

error_reporting(E_ALL);

require_once("magpierss/rss_fetch.inc");

$url = "http://hierderanbieter.de/neu/irgendwas.rdf";

$rss = fetch_rss($url);

echo "<ul>";
foreach ($rss->items as $item) {
$href = $item['link'];
$title = $item['title'];
echo "<li><a href=$href>$title</a></li>";
}
echo "</ul>";
?>

Wie sie es sich aber denken können, gibt es immer noch kleinere Problemchen. Klickt man nun auf einen Link, wird die Seite nicht in einem neuen Tab/Registerkarte geöffnet. Da dies aber eine Grundvoraussetzung vieler Anbieter ist, müssen sie schleunigst den Code modifizieren. Es ist richtig, dass sie dies ganz einfach mit target="_blank" ändern können. Aber um der XHTML 1.0 Validierung zu entsprechen, müssen sie sich etwas Anderes einfallen lassen.

Ausnahmsweise hilft uns hier Javascript aus der Patsche. Denn Javascript ist für eine erfolgreiche Validierung nicht relevant. Ersetzen sie die echo-Zeile, damit es der Lösung entspricht:

...

echo "<li><a href=\"$href\" onclick=\"window.open(this.href,'_blank'); return false;\">$title</a></li>";

...

Und schon sind die Problemchen mit XHTML 1.0 und den möglichen Anbietern, wie weggeblasen!

Ihnen wird aber bestimmt aufgefallen sein, dass bei ihnen seltsame Zeichen(e�e�e�e�) angezeigt werden, obwohl sie UTF-8 benutzen, Server-seitig aktiviert haben, das richtige Charset benutzen und selbst die zu parsende XML-Datei in UTF-8 codiert ist. Je länger sie auch suchen, der Fehler liegt nicht bei ihnen. Hierbei handelt es sich um einen Bug, der in MagpieRSS enthalten ist. Doch Gott sei Dank, befreien sie zwei Zeilen von den seltsamen Rauten und Fragezeichen.

define('MAGPIE_INPUT_ENCODING', 'UTF-8');
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');

require_once("magpierss/rss_fetch.inc");

...

Sollte ihnen das geschriebene PHP- Skript nun schon so gefallen, dass sie es nun an Ort und Stelle nutzen wollen, können sie den nächsten Schritt gerne überspringen. Doch sollen die Schlagzeilen auf eine bestimmte Anzahl reduziert werden, müssen sie noch eine kleine "count"-Funktion einbauen.

...

echo "<ul>";
$count = 1;
foreach ($rss->..

...>$title</a></li>";
$count ++;
if($count==10){ break;}
}
echo "</ul>";

...

Es wird nun geparste Schlagzeile, für Schlagzeile gezählt. In diesem Fall bis zehn (count==10). Wählen sie die gewünschte Anzahl und freuen sie sich über ein funktionierendes Skript!

Seitenanfang

Einbinden in andere Dateiformate

Unser gesamtes Projekt begann mit normalen ".htm"- Dateien in der "ISO-8859-1" Codierung. Danach wandelte sich der Doctype in XHTML 1.0 Strict mit UTF-8, aber die ".htm"- Dateien wurden beibehalten, da wir wegen einem einzigen PHP-Skript, nicht alle Seiten auf die neue Endung umstellen wollten, bzw. keinen "Misch-Masch" aus ".htm"- und ".php"- Dateien wollten. Um nun PHP auch auf anderen Dateien lauffähig zu machen, müssen sie eine ".htacces"- Datei erstellen. Sollten sie wie wir, den Webhost "1und1" benutzen, gehen sie folgendermaßen vor.

  1. Öffnen sie den Texteditor ihrer Wahl.
  2. Schreiben sie zwei Zeilen mit: AddType x-mapp-php4 .php .htm und AddHandler x-mapp-php4 .php .htm
  3. Natürlich können sie jede x-beliebige Datei an den Befehl anhängen, um es af ihre Website anzupassen.
  4. Speichern sie die Datei als .htaccess . Darauf sollten sie eine Datei sehen können, denen kein Programm zugewiesen ist. Bearbeiten können sie diese Datei noch ganz einfach über ihren Texteditor -> öffnen mit...
  5. Laden sie die .htaccess in ihr Stammverzeichnis des Servers.
  6. Sie können nun PHP in anderen Dateien anwenden.

Alles was sie jetzt noch tun müssen ist den PHP-Code in ihr Webdocument einzufügen. Dies sollte ungefähr so aussehen, wenn man ans Ende dieses Guides gekommen ist.

<div id="textkörper">
<div id="links">
<h2>Hartware- News</h2>

<?php
define('MAGPIE_INPUT_ENCODING', 'UTF-8');
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');
define('MAGPIE_DIR', 'magpierss/');
require_once(MAGPIE_DIR."rss_fetch.inc");

$url = "http://Anbieter/ihrer/Wahl.rdf";

$rss = fetch_rss($url);

echo "<ul>";
$count = 1;
foreach ($rss->items as $item) {
$href = $item["link"];
$title = $item["title"];
echo "<li><a href=\"$href\" onclick=\"window.open(this.href,'_blank'); return false;\">$title</a></li>";
$count ++;
if($count==10){ break;}
}
echo "</ul>";
?>

</div>
<p>Diese Seite befindet ....

...

PHP Homepage

PHP wird im Quelltext nicht angezeigt. Alles was sie davon zu Gesicht bekommen, zeigt ihnen das Bild oben, oder ein einfacher Blick in den Quelltext, auf unserer Startseite.

Seitenanfang

Wenige Worte zum Abschluss

An dieser Stelle möchten wir uns beim Team von Hartware.net bedanken, ohne deren ständige, qualitativ hochwertige Arbeit im Newsbereich, kein derartiger Wunsch einer Umsetzung entstanden wäre. Alles was sie hier lesen konnten, hat eine Menge Zeit und Geduld gekostet - wir sind aber dennoch offen für Kritik und konstruktive Verbesserungsvorschläge. Sollte uns also ein Fehler unterlaufen sein, teilen sie es uns bitte mit. Desweiteren gilt zu berücksichtigen, dass dies die erste Auseinandersetzung im Bereich PHP und RSS des Autors darstellt, weswegen mancher Anfängerfehler aufgetreten sein könnte. Zum Schluss könnten ihnen die folgenden Internetseiten zur Hilfe kommen, falls sie mit einem exotischen Problem zu kämpfen haben.

Seitenanfang

Valid XHTML 1.0 StrictCSS ist valide!