RSS Syndication · 5 min read · Sep 14, 2025
Einfache RSS-Syndizierung mit MagpieRSS
Einfache RSS-Syndizierung mit MagpieRSS
Was ist MagpieRSS?
MagpieRSS, liebevoll als Magpie bekannt, ist ein RSS- und Atom-Parser für PHP. Es ermöglicht Ihnen, die neuesten Artikel von Websites mit RSS- oder Atom-Feeds auf Ihrer eigenen Seite anzuzeigen. Dies ist eine großartige Möglichkeit, neue, frische und relevante Informationen zu Ihrer Seite hinzuzufügen. Es analysiert RSS 0.9, RSS 1.0 und hat eine gewisse Unterstützung für RSS 2.0 sowie Atom 0.3.
Was benötige ich, um Magpie zu verwenden?
Um Magpie zu verwenden, muss Ihr Server PHP-Version 4.2.0 mit XML-Unterstützung oder PHP5 mit libxml2-Unterstützung unterstützen. Danach ist die Einrichtung und Verwendung von Magpie ein Kinderspiel.
Okay, ich habe genug gehört, wo bekomme ich es?
Sie können Magpie von SourceForge herunterladen, indem Sie hier klicken.
Und jetzt?
Entpacken Sie einfach die Datei und laden Sie die folgenden Dateien auf Ihren Server hoch: rss_fetch.inc, rss_parser.inc, rss_cache.inc und rss_utils.inc sowie das gesamte Verzeichnis mit dem Namen extlib. Sie können diese Dateien in jedes Verzeichnis im Stammverzeichnis Ihres Webservers hochladen. Ich lade sie normalerweise in ein Verzeichnis namens rss hoch.
Als nächstes müssen Sie entscheiden, wo Sie den syndizierten Inhalt platzieren möchten. Wenn Sie beispielsweise Inhalte auf der Startseite von www.example.com syndizieren möchten, müssen Sie die Datei index.html(php) bearbeiten. Wenn Ihre Datei nicht mit php endet, müssen Sie sie so ändern, dass sie es tut, da wir PHP-Code hinzufügen werden.
Als nächstes werden wir tatsächlich die Datei index.php bearbeiten. Wir müssen den folgenden Code an den Anfang der Seite hinzufügen, auf der Sie die Feeds anzeigen möchten:
Bitte beachten Sie, dass Ihr Pfad je nach dem, wie Sie das Verzeichnis benannt haben, und wo sich Ihre index.php im Verzeichnisbaum befindet, unterschiedlich sein kann. Um die Feeds tatsächlich auf Ihrer Seite hinzuzufügen, müssen Sie auch die folgenden Zeilen hinzufügen, um das RSS abzurufen und zu analysieren:
und die Adresse durch die Adresse des Feeds ersetzen, den Sie anzeigen möchten.
Dies gibt ein Array, $rss, zurück, das den syndizierten Inhalt sowie einige Informationen über den Herausgeber enthält. Die anderen zurückgegebenen Informationen (normalerweise) sind der Name des Herausgebers, der in $rss->channel[‘title’] gespeichert ist, eine Beschreibung des Herausgebers, die in $rss->channel[‘description’] gespeichert ist, und ein allgemeiner Link zum Herausgeber, der in $rss->channel[‘link’] gespeichert ist.
Die Elemente können über $rss->items zugegriffen werden, und eine einfache Schleife kann verwendet werden, um die Elemente nacheinander zu durchlaufen. Der Code für die Schleife ist:
foreach ($rss->items as $item)
{ // Code zur Manipulation der Elemente hier
}Jedes Element enthält einen Titel, einen Link und eine Beschreibung. $item[‘title’] enthält den Titel des Artikels, $item[‘link’] ist der Link zum Original und $item[‘description’] ist die Beschreibung der Geschichte, die oft die ersten paar Zeilen des Inhalts umfasst. Eine grundlegende Liste des syndizierten Inhalts kann mit dem folgenden Code erreicht werden:
channel['link'].">".$rss->channel['title']."";
foreach ($rss->items as $item) {
$href = $item['link'];
$title = $item['title'];
$desc = $item['description'];
echo "
$title
";
if($desc) echo $desc;
}?>
Das ist ziemlich einfach, aber Sie sollten in der Lage sein, es an Ihre Bedürfnisse anzupassen.
Allgemeine Probleme und Lösungen
Der syndizierte Inhalt ist zu lang für meine Seite.
Wenn der Inhalt, den Sie syndizieren, zu lang ist oder zu viele Elemente enthält und beginnt, Ihre Seite komisch aussehen zu lassen, können Sie einfach die folgenden Zeilen hinzufügen, um die Anzahl der angezeigten Einträge festzulegen und die Länge der Beschreibung zu setzen.
$items = array_slice($rss->items, 0, 5);Diese Zeile gibt nur eine Teilmenge des Feeds zurück, in diesem Fall nur die ersten 5 Einträge. Um die Beschreibung zu verkürzen, würden Sie die folgenden Zeilen verwenden:
if (strlen($desc) >= 100)
{
$desc = substr($desc,0,99)."...";
}Was dies tut, ist zu überprüfen, ob die Zeichenlänge für die Beschreibung länger als 100 Zeichen ist, was, wenn dies der Fall ist, die ersten 99 anzeigt und … danach, um dem Leser mitzuteilen, dass es weitergeht.
Ich möchte das Caching von Feeds aktivieren, um die Bandbreite zu reduzieren und die Ladezeiten zu beschleunigen. Ist das möglich?
Auf jeden Fall! Magpie hat das Caching standardmäßig aktiviert, aber Sie müssen wahrscheinlich das Verzeichnis ändern, in das es cached, sowie sicherstellen, dass es vom Benutzer, unter dem der Server läuft, beschreibbar ist. Es versucht, im Arbeitsverzeichnis zu schreiben, in dem das Skript aufgerufen wird. Wenn Sie beispielsweise den Feed auf Ihrer Startseite hinzufügen, versucht das Skript, das Cache-Verzeichnis im Stammverzeichnis Ihres Servers zu erstellen. Die folgenden Zeilen aktivieren den Cache und setzen das Verzeichnis, in das es cached:
define('MAGPIE_CACHE_DIR', '/tmp/magpie_cache');
define('MAGPIE_CACHE_ON', 1);Standardmäßig cached Magpie Elemente nur für eine Stunde, aber dies kann mit der folgenden Zeile geändert werden:
define('MAGPIE_CACHE_AGE', 1800);Dies setzt Magpie so, dass es Elemente für 30 Minuten cached. Es ist wichtig zu beachten, dass das Intervall in Sekunden angegeben wird.
Okay, ich habe diese Zeilen hinzugefügt, aber das Caching funktioniert immer noch nicht!
Sie müssen sicherstellen, dass das Verzeichnis, das Sie für den Cache festgelegt haben, existiert und vom Benutzer, unter dem der Server läuft, beschreibbar ist. In Debian ist dies www-data. Es tut mir leid, aber ich weiß nicht, unter welchem Benutzer Apache standardmäßig auf anderen Distributionen läuft. Sie können dies mit den folgenden Befehlen (als root) erreichen:
mkdir /tmp/magpie_cache
chown www-data:www-data /tmp/magpie_cacheBitte beachten Sie, dass der Cache nicht in /tmp sein muss und es tatsächlich eine gute Idee ist, ihn zu ändern, wenn Sie Shared Hosting verwenden. Danach aktualisieren Sie die Seite und Sie sollten einige Dateien mit sehr seltsamen Namen im Cache-Verzeichnis sehen. Wenn ja, ist alles in Ordnung. Wenn nicht, beziehen Sie sich bitte auf die FAQ auf der MagpieRSS-Homepage.
Alles zusammenfügen
Folgendes ist, wie die Optionen kombiniert werden sollten, und ist ein funktionierendes Beispiel mit geringfügigen Modifikationen von meiner eigenen Seite.
items, 0, 5);
foreach ($items as $item) {
$href = $item['link'];
$title = $item['title'];
$desc = $item['description'];
echo "
$title
";
if($desc)
if (strlen($desc) >= 125)
{
$desc = substr($desc,0,124)."...";
}
echo $desc;
}
;
?>
Dies ruft den Feed von www.digg.com im Linux-Bereich ab und zeigt die ersten 5 Einträge mit einer 125 Zeichen langen Beschreibung an. Es cached auch im Verzeichnis /var/cache mit der standardmäßigen Cache-Zeit von 1 Stunde.
Und da haben Sie es, schnelle und einfache RSS-Syndizierung mit MagpieRSS! Wenn Sie weitere Informationen, Hilfe oder etwas anderes benötigen, empfehle ich Ihnen dringend, die MagpieRSS-Homepage zu besuchen. Sie haben auch eine aktive Mailingliste und pflegen Archive, die meine Fragen jedes Mal beantwortet haben, wenn ich Hilfe benötigte.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.