Lieber Gast …

… die Inhalte von PSD-Tutorials.de stehen nur registrierten Mitgliedern zur Verfügung. Damit wollen wir den Communitygedanken weiterführen. Als Mitglied trägst du - wenn auch nur im Kleinen - zum Puls der Community bei. Und nur so ist es möglich, weiterhin hochwertige Inhalte für alle bereitzustellen.

Jetzt kostenlos registrieren!

Vorteile der kostenlosen Mitgliedschaft

Mit der kostenlosen und schnell erledigten Registrierung erhältst du viele nachhaltige Vorteile, die wir dir hier in aller Kürze aufzeigen möchten:

  • PSD steht für professionelles Know-how in den Bereichen Bildbearbeitung mit Photoshop, Fotografie, Webentwicklung, Layout- und Vektorbearbeitung, 3D-Bearbeitung mit Cinema 4D und Co.
  • Über 2200 Tutorials mit druckbarer PDF-Datei und teilweise den zugehörigen Arbeitsmaterialien
  • Mehr als 500 Video-Trainings als Stream zur Direktanzeige und zum Download
  • Abruf von über 1000 Downloads zu Photoshop-Presets, 3D-Modellen, Grußkarten, Texturen & Co
  • Zugriff auf ein sehr aktives Forum mit Antworten im Minutentakt
  • Deine Daten sind sicher. Sie werden nicht weitergegeben! Die Mitgliedschaft kann jederzeit und ohne Aufwand wieder gelöscht werden.

Reinschnuppern als Gast

Niemand kauft gerne die Katze im Sack, auch wenn sie kostenlos ist. Wir haben eine Handvoll Tutorials und Video-Trainings ausgesucht, die du auch als Gast ohne Registrierung ansehen kannst. Gefallen sie dir, stehen dir nach der Registrierung alle oben genannten Inhalte zur Verfügung.

Das Punktesystem

Einen winzigen Haken gibt es noch. Es gibt bei uns ein Punktesystem. Damit soll erreicht werden, dass Mitglieder sich aktiv in unserer Community beteiligen. Sobald du im Forum schreibst oder Tutorials kommentierst, bekommst du Punkte. Mit diesen Punkten kannst du wiederum Tutorials anschauen oder Downloads herunterladen. Mit der Registrierung bei PSD-Tutorials.de erhältst du ein Startguthaben von 100 Punkten, womit du schon ein gutes Stück weit kommst.

Jetzt kostenlos registrieren!

Passend zum Inhalt empfehlen wir unsere:

PHP-Workshop-DVD - Basics & Tricks

  • 12 Stunden Video-Training, 480 PDF-Seiten Tutorials
  • Basics, Formulare, Datenbanken, XML und Co.
  • 4 Stunden Bonusmaterial zum Webdesign (mit Photoshop
Jetzt informieren

Kommentare


Achtung: Du kannst den Inhalt erst nach dem Login kommentieren.

Tutorial empfehlen

 

Anleitung (Bilder + Extras werden nur für Mitglieder eingeblendet)


Ziel dieses Tutorials ist es, via PHP einen eigenen RSS-Feed zu erstellen. Als Basis dient dabei die DOM-Erweiterung, die standardmäßig bei PHP aktiviert ist. Auch das lässt sich wieder über phpinfo() ermitteln.

Bilder


Zunächst muss der Kopfbereich des RSS-Feeds definiert werden. Die Syntax sieht folgendermaßen aus.

$xml = new DOMDocument('1.0', 'UTF-8');
$xml->formatOutput = true;
$roo = $xml->createElement('rss');
$roo->setAttribute('version', '2.0');
$xml->appendChild($roo); 
$cha = $xml->createElement('channel');
$roo->appendChild($cha);


Hier lohnt in jedem Fall ein Blick auf die einzelnen Elemente.

$xml = new DOMDocument('1.0', 'UTF-8');


Dadurch werden in die XML-Deklaration, die verwendete XML-Version und die gewünschte Zeichenkodierung eingefügt. Im Ergebnisquellcode führt das zu folgender Ausgabe:

<?xml version="1.0" encoding="UTF-8"?>


Damit die Ausgabe "geordnet" erfolgt, sollte formatOutput auf true gesetzt werden. Dadurch wird die XML-Syntax sortiert und eingerückt im Ergebnisdokument angezeigt. Verzichtet man darauf, wird der Quellcode unsortiert und in einer Zeile ausgegeben. Lesbar ist der dann nur schwer.

$xml->formatOutput = true;


Weiter geht es mit der Definition des ersten Elements des XML-Dokuments. Bei diesem ersten Element handelt es sich um rss. Diesem Element wird das Attribut version mit dem Wert 2.0 zugewiesen. Letztendlich müsst ihr hier die RSS-Version angeben, die ihr im Feed verwenden wollt. (Normalerweise liegt man derzeit mit 2.0 richtig).

$roo = $xml->createElement('rss');
$roo->setAttribute('version', '2.0');


Das neu erstellte rss-Element wird über appendChild() in das Dokument eingefügt.

$xml->appendChild($roo); 


Laut RSS-Spezifikation muss als Kindelement von rss das Element channel eingefügt werden.

$cha = $xml->createElement('channel');
$roo->appendChild($cha);


Damit steht das Grundgerüst des Feeds. Im nächsten Schritt werden einige allgemeine Metadaten über den Feed angegeben. Dazu gehören der Feed-Titel, die Beschreibung, die verwendete Sprache, der Feed-URL und das Feed-Erstelldatum.

$hea = $xml->createElement('title',utf8_encode('medienwerke.de - Daniel Koch'));
$cha->appendChild($hea);
$hea = $xml->createElement('description',utf8_encode('CMS-Support, 
Bücher, Videotrainings ...')); 
$cha->appendChild($hea);

$hea = $xml->createElement('language',utf8_encode('de')); 
$cha->appendChild($hea);
$hea = $xml->createElement('link',htmlentities('http://www.medienwerke.de/feed/')); 
$cha->appendChild($hea);

$hea = $xml->createElement('lastBuildDate',utf8_encode
(date("Thu, 13 Oct 2011 11:29:07 +0000").'GMT'));
$cha->appendChild($hea);


Dabei dürften die einzelnen Elemente selbsterklärend sein. Eine genauere Betrachtung verdient aber sicherlich folgende Zeile:

$hea = $xml->createElement('link',htmlentities('http://www.medienwerke.de/feed/')); 


Hierüber gibt man die Feed-Adresse an. Interessant ist dort htmlentities(). Darüber werden mögliche Probleme mit Sonderzeichen verhindert, die im URL des Feeds auftauchen könnten.

Der Feed muss nun natürlich noch als XML-Datei abgespeichert werden.

$xml->save('rss.xml');


 
Ruft man diese Datei im Browser auf, ergibt sich folgendes Bild:

Bilder


Auch wenn diese Ansicht noch nicht sonderlich spektakulär erscheint, handelt es sich doch um einen echten RSS-Feed.

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>medienwerke.de - Daniel Koch</title>
<description>CMS-Support, Bücher, Videotrainings ...</description>
<language>de</language>
<link>http://www.medienwerke.de/feed/</link>
<lastBuildDate>CEST02000000, 13 +02002011-10-20T14:50:23+02:0031 2011 11:29:07 +0000GMT</lastBuildDate>
</channel>
</rss>


 
Damit steht das Grundgerüst des Feeds. Nun müssen die eigentlichen Inhalte angelegt werden. Werft dafür zunächst einen Blick auf den folgenden Code:

<item>
<title>XML Schema: Die Nachteile von DTDs</title>
<description>XML Schema ist ein neuer Ansatz, um XML-Dokumenttypen ohne Einsatz 
einer DTD zu beschreiben. 
Dabei stellt sich zunächst die Frage, warum es eigentlich eines solch neuen 
Ansatzes bedarf. Denn schließlich 
wurde im vorherigen Kapitel gezeigt, dass sich Dokumenttypen durchaus mit DTDs 
definieren lassen. Es gibt 
also offensichtlich Defizite, die beim Einsatz von DTDs zu Tage [...]</description>
<link>http://www.medienwerke.de/2011/10/10/xml-schema-die-nachteile-von-dtds/</link>
<pubDate>Mon, 10 Oct 2011 18:27:12 +0000</pubDate>
<guid>http://www.medienwerke.de/?p=831</guid>
</item>
<item>
...
</item>
<item>
...
</item>


Die eigentlichen Inhalte des Feeds werden jeweils in einzelnen item-Elementen hinterlegt. Diese Elemente sind wiederum Unterelemente von channel. Erstellt werden sie über die bekannte createElement()-Funktion.

$itm = $xml->createElement('item');
$cha->appendChild($itm);


Innerhalb der einzelnen item-Elemente werden dann die eigentlichen Feed-Inhalte definiert. Dabei setzt sich ein Inhalt immer mindestens aus folgenden Elementen zusammen:

title – Der Titel des Beitrags.
description – Das ist der eigentliche Beitrag, also der Inhalt.
link – Der Link auf den Beitrag. Auch hier sollte wieder das bereits vorgestellte htmlentities() verwendet werden. Dabei zeigt dieser Link auf die Stelle der Webseite, auf der der vollständige Beitrag steht.
guid – Das ist die eindeutige Identifikationsnummer des Beitrags. Üblicherweise verwendet man hier einen Permalink auf den Beitrag. So können die Aggregatoren den Beitrag eindeutig identifizieren. (Handelt es sich tatsächlich um einen Permalink, sollte dem Element noch permalink="true" als Attribut/Wert zugewiesen werden).
pubDate – Damit die Leser wissen, wann die jeweiligen Beiträge geschrieben wurden, gibt man hierüber das Erstelldatum an. Dabei sollte die Datumsangabe in der Form Mon, 24. Okt. 2011 13:15:34 EST geschrieben werden.

Weitere Angaben sind zunächst einmal nicht nötig. Insgesamt sieht die Definition eines Beitrags innerhalb eines RSS-Feeds also folgendermaßen aus:

  $itm = $xml->createElement('item');
  $cha->appendChild($itm);
  $dat = $xml->createElement('title',utf8_encode('XML Schema: Die 
Nachteile von DTDs')); 
  $itm->appendChild($dat);
  $dat = $xml->createElement('description',utf8_encode('XML Schema 
ist ein neuer Ansatz, um XML-Dokumenttypen ohne Einsatz
einer DTD zu beschreiben. Dabei stellt sich zunächst die Frage, 
warum es eigentlich eines solch neuen Ansatzes bedarf. 
Denn schließlich wurde im vorherigen Kapitel gezeigt, dass sich 
Dokumenttypen durchaus mit DTDs definieren lassen. Es gibt 
also offensichtlich Defizite, die beim Einsatz von DTDs zu Tage [...]')); 
  $itm->appendChild($dat);
  $dat = $xml->createElement('link',htmlentities('http://www.medienwerke.de/2011/10/10/
xml-schema-die-nachteile-von-dtds/'));
  $itm->appendChild($dat);
  $dat = $xml->createElement('pubDate',utf8_encode('Mon, 10 Oct 2011 18:27:12 +0000')); 
  $itm->appendChild($dat);
  $dat = $xml->createElement('guid',htmlentities('http://www.medienwerke.de/?p=831'));
  $itm->appendChild($dat);


Ihr könnt beliebig viele item-Elemente einfügen. Insgesamt könnte die Syntax folgendermaßen aussehen:

<?php
  $xml = new DOMDocument('1.0', 'UTF-8');
  $xml->formatOutput = true;
  $roo = $xml->createElement('rss');
  $roo->setAttribute('version', '2.0');
  $xml->appendChild($roo); 
  $cha = $xml->createElement('channel');
  $roo->appendChild($cha);
  $hea = $xml->createElement('title',utf8_encode('medienwerkede Daniel Koch')); 
  $cha->appendChild($hea);
  $hea = $xml->createElement('description',utf8_encode('CMS-Support, 
  B&uuml;cher, Videotrainings ...'));
  $cha->appendChild($hea);
  $hea = $xml->createElement('language',utf8_encode('de')); 
  $cha->appendChild($hea);
  $hea = $xml->createElement('link',htmlentities
  ('http://www.medienwerke.de/feed/'));
  $cha->appendChild($hea);
  $hea = $xml->createElement('lastBuildDate',utf8_encode(date
  ("Thu, 13 Oct 2011 11:29:07 +0000").'GMT'));
  $cha->appendChild($hea);
  $itm = $xml->createElement('item');
  $cha->appendChild($itm);
  $dat = $xml->createElement('title',utf8_encode('XML Schema: Die Nachteile von DTDs')); 
  $itm->appendChild($dat);
  $dat = $xml->createElement('description',utf8_encode('XML Schema ist ein 
  neuer Ansatz, um XML-Dokumenttypen ohne Einsatz einer DTD zu beschreiben. 
  Dabei stellt sich zunächst die Frage, warum es eigentlich eines solch 
  neuen Ansatzes bedarf. Denn schließlich wurde im vorherigen Kapitel gezeigt, 
  dass sich Dokumenttypen durchaus mit DTDs definieren lassen. Es gibt also 
  offensichtlich Defizite, die beim Einsatz von DTDs zu Tage [...]')); 
  $itm->appendChild($dat);
  $dat = $xml->createElement('link',htmlentities('http://www.medienwerke.de/2011/
  10/10/xml-schema-die-nachteile-von-dtds/'));
  $itm->appendChild($dat);
  $dat = $xml->createElement('pubDate',utf8_encode('Mon, 10 Oct 2011 18:27:12 +0000')); 
  $itm->appendChild($dat);
  $dat = $xml->createElement('guid',htmlentities('http://www.medienwerke.de/?p=831')); 
  $itm->appendChild($dat);
  $xml->save('feed.xml');
?>


 
Das Ergebnisdokument sähe in diesem Fall folgendermaßen aus:

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>medienwerke.de - Daniel Koch</title>
<description>CMS-Support, Bücher, Videotrainings ...</description>
<language>de</language>
<link>http://www.medienwerke.de/feed/</link>
<lastBuildDate>CEST02000000, 13 +02002011-10-20T14:50:23+02:0031 
2011 11:29:07 +0000GMT</lastBuildDate>
<item>
<title>XML Schema: Die Nachteile von DTDs</title>
<description>XML Schema ist ein neuer Ansatz, um XML-Dokumenttypen ohne Einsatz 
einer DTD zu beschreiben. 
Dabei stellt sich zunächst die Frage, warum es eigentlich eines solch 
neuen Ansatzes bedarf. Denn schließlich 
wurde im vorherigen Kapitel gezeigt, dass sich Dokumenttypen durchaus mit 
DTDs definieren lassen. Es gibt also offensichtlich Defizite, die beim 
Einsatz von DTDs zu Tage [...]</description>
<link>http://www.medienwerke.de/2011/10/10/xml-schema-die-nachteile-von-dtds/</link>
<pubDate>Mon, 10 Oct 2011 18:27:12 +0000</pubDate>
<guid>http://www.medienwerke.de/?p=831</guid>
</item>
</channel>
</rss>


 
Ruft man diese XML-Datei im Browser auf, sollte dieser erkennen, dass es sich dabei um ein RSS-Feed handelt.

Bilder


 
Leider machen das nicht alle Browser so vorbildlich wie beispielsweise der Firefox oder der Internet Explorer.

Bilder


 
Google Chrome zeigt beispielsweise ausschließlich die XML-Syntax an:

Bilder


 
Umgehen lässt sich das Problem hier durch Nachrüsten der Erweiterung RSS-Abonnoment, die ihr hier herunterladen könnt: https://chrome.google.com/webstore/detail/nlbjncdgjeocebhnmkbbbdekmmmcbfjd. Nach erfolgreicher Installation könnt ihr auch im Chrome RSS-Feeds komfortabel lesen und verwalten.

Wenn ihr innerhalb eurer Webseite auf den RSS-Feed verweisen wollt, gibt es zwei Möglichkeiten. Zunächst einmal kann man natürlich einen Hyperlink auf die XML-Datei setzen.

<a href="feed.xml" title="medienwerke.de - RSS-Feed" rel="alternate" 
type="application/rss+xml">RSS-Feed abonnieren</a>


Alternativ dazu kann man auch innerhalb des head-Bereichs der Seite ein link-Element einfügen.

<link rel="alternate" type="application/rss+xml" title="News-Feed" 
href="http://www.medienwerke.de/feed">


Moderne Browser erkennen automatisch, dass es sich um ein Feed handelt und zeigen ein entsprechendes Symbol an, über das man den Feed abonnieren kann.
vBulletin 0.034 ZF-App 0.28 Total 0.314