Weblog-Inhalte auf anderen Seiten nutzen
Webloginhalte exportieren :: christian_koeppe_berlin, 22. Oktober 2003, 23:11
Zunächst betrachte ich dazu vorhandene Standards und die damit verbundenen Möglichkeiten (ab morgen, denn jetzt ist es schon ziemlich spät).
Standards für die Darstellung - RSS
christian_koeppe_berlin, 23. Oktober 2003, 22:44
Diese Daten werden dann in sogenannte Feeds ausgelesen und können so beliebigen anderen Webseiten verfügbar gemacht werden. Das interessante ist jetzt, wie man an diese RSS-Feeds herankommt. Im Falle von Antville gibt es da die Möglichkeit, an bestimmte URLs (z.B. die eines Blogs) noch
/rss
anzuhängen und so den RSS-Feed zu bekommen. Als Beispiel mal hier klicken:/blogville/rss (öffnet sich in neuem Browserfenster...) Wenn man das gleiche mit der kompletten URL des Antville-servers macht, erhält man den RSS-Feed der Startseite. (Ihr könnt euch das alles auch anschauen, indem ihr auf den orangenen XML-button klickt, der sich irgendwo auf der Seite herumtreibt)
Im Falle des Antville-servers wird noch das etwas ältere RDF Site Summary benutzt, dass heisst, dass wir hier nicht mit der aktuellsten Version von RSS arbeiten müssen (zumindest habe ich das so herausgefunden, als Haupttag der RSS-Feeds aus Antville wird
rdf
ausgegeben, was nicht der aktuellen DTD entspricht, da muss nochmal genau geprüft werden, welche DTD jetzt für uns "zuständig" ist)Weiterhin ist noch zu klären, ob und wie auch andere Feeds aus Antville gelesen werden können, z.B. eine komplette Liste der Weblogs, Themenlisten einzelner Blogs etc. Das würde weitreichende Möglichkeiten einer Linksammlung eröffnen, in der dann auch nach Themen gesucht werden könnte. Und genau damit gehts dann beim nächsten Kommentar meinerseits weiter.
So, hier noch die DTD (die Kommentare und die Character Entities (also Sonderzeichen nach ISO Latin-1) habe ich entfernt, das Original liegt hier):
<!ELEMENT rss (channel)>
<!ATTLIST rss
version CDATA #REQUIRED> <!-- must be "0.91"> -->
<!ELEMENT channel (title | description | link | language | item+ | rating? | image? | textinput? | copyright? | pubDate? | lastBuildDate? | docs? | managingEditor? | webMaster? | skipHours? | skipDays?)*>
<!ELEMENT title (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT link (#PCDATA)>
<!ELEMENT image (title | url | link | width? | height? | description?)*>
<!ELEMENT url (#PCDATA)>
<!ELEMENT item (title | link | description)*>
<!ELEMENT textinput (title | description | name | link)*>
<!ELEMENT name (#PCDATA)>
<!ELEMENT rating (#PCDATA)>
<!ELEMENT language (#PCDATA)>
<!ELEMENT width (#PCDATA)>
<!ELEMENT height (#PCDATA)>
<!ELEMENT copyright (#PCDATA)>
<!ELEMENT pubDate (#PCDATA)>
<!ELEMENT lastBuildDate (#PCDATA)>
<!ELEMENT docs (#PCDATA)>
<!ELEMENT managingEditor (#PCDATA)>
<!ELEMENT webMaster (#PCDATA)>
<!ELEMENT hour (#PCDATA)>
<!ELEMENT day (#PCDATA)>
<!ELEMENT skipHours (hour+)>
<!ELEMENT skipDays (day+)>
Christian Köppe
RSS die zweite
christian_koeppe_berlin, 27. Oktober 2003, 12:30
So, erste Erkenntnisse gibt es beim Auslesen anderer Inhalte ausser denen auf der Startseite und eines einzelnen Blogs. Ich untersuche gerade die Möglichkeiten, den Inhalt einer Story (inkl. Kommentaren) als RSS auszulesen sowie auch solche Sachen wie Userlists, Themenlisten etc. Bisher herausgefunden habe ich, dass für eben dieses Auslesen skins definiert werden müssen, welche dann mit Hilfe der vorhandenen Makros das entsprechende XML (also das RSS-Feed) erzeugen.
Ich werde erste Entwürfe bei mir lokal testen und dann in Absprache mit der Installationsgruppe auf unserem Server erweitern. Welche Möglichkeiten es dann genau gibt, werde ich wie üblich hier veröffentlichen.
Allgemeine Funktionsweise
christian_koeppe_berlin, 8. November 2003, 13:19
Das Auslesen des RSS-Feeds geschieht wie vieles andere in Antville auch mit Hilfe eines Skins und einer Script-datei. Beide Dateien müssen sich im entsprechenden Verzeichnis des Servers befinden.
Ein Beispiel verdeutlicht das vielleicht etwas besser: Wie ich in einem der letzten Kommentare schon beschrieben habe, bekommt man nach Eingabe von
rss
hinter der URL des Blogs den RSS-Feed von ebendiesem. Was dabei passiert ist folgendes: der Applikationsserver ruft eine Funktion namens rss
auf, welche als gleichnamiges Script im root-Verzeichnis liegt. Dieses Script sammelt dann die notwendigen Informationen (last modified stories etc.), legt diese in Parametern und erstellt anschliessend mit Hilfe des Skins den RSS-Feed.Wenn man nun also den RSS-Feed einer Story mit Kommentaren und evtl. noch anderen Informationen auslesen möchte, muss man in das Story-verzeichnis des Servers ein entsprechendes Skin- und Scriptdateien-paar legen. Dieses kann mit rss benannt werden (für den Standardfeed) oder auch andere Namen bekommen (für spezifischere Feeds, als Beispiel will ich hier mal eine mögliche Liste aller Nutzer, die Kommentare zu einer Story abgegeben haben mit entsprechenden Links auf ihre eigenen Blogs angeben). Die Möglichkeiten werden dabei lediglich vom Applikationserver eingeschränkt. Da diese Feeds als zusätzliche Funktionen implementiert werden können, also das bestehende System nicht verändert werden muss, gibt es diesbezüglich auch keine Sicherheitsbeschränkungen.
Eine Frage gibt es natürlich noch zu beantworten: Was macht man jetzt mit den Feeds? Zum einen gibt es da sogenannte Feed-Reader. Diese lesen in regelmässigen Abständen die Feeds aus zuvor benannten Blogs aus und zeigen diese formatiert an. Hier ein paar Beispiele für Feed-Reader (mit entsprechenden Links, öffnen alle in neuem Fenster):
NetNewsWire (Mac)
FeedReader (Win)
Syndirella (Win)
Eine zweite Möglichkeit ist die Verarbeitung des RSS-Feeds (welcher ja eine XML-Datei ist) mit Hilfe einer Scriptsprache, z.B. PHP oder auch JavaScript, oder auch eine Formatierung mit CSS (Cascading Style Sheets). Von einer direkten Darstellung mit Hilfe von XSL würde ich abraten, da lediglich der Internet Explorer dies unterstützt.
So, ich hoffe mal die Funktionsweise halbwegs verständlich erklärt zu haben. Für Fragen bin ich natürlich jederzeit offen (am besten als Kommentar anhängen).
Christian Köppe
Das Dilemma und die mögliche Lösung
christian_koeppe_berlin, 10. November 2003, 13:35
Read On
. Und nun kommt unser Dilemma: dieser Link funktioniert nicht. Das liegt wohl daran, das ebendiese Funktion (auslesen des RSS-Feeds einer Story) bei Antville nicht implementiert ist. An der Lösung dieses Problems arbeite ich gerade, da ich schon denke, dass solche Möglichkeiten wie FeedReader auch in unserer Lehrveranstaltung von Nutzen seine können. Sobald diese Möglichkeit existiert, gibt es an dieser Stelle einen kurzen Hinweis.Christian Köppe
RSS-FEEDS UNSERES SERVERS JETZT KORREKT!
christian_koeppe_berlin, 14. November 2003, 14:38
Dort wird beim Link lediglich die relative URL angegeben, richtig ist hier aber die komplette URL. Dazu muss zusätzlich noch innerhalb des Link-Tags folgender Tag eingefügt werden:
<% root.sysurl %>
das sieht dann insgesamt so aus:
<link><% root.sysurl %><% param.url encoding="xml" %></link>
Nachdem diese Zeile in den entsprechenden Dateien eingefügt wurden und unser Antville-Server neu gestartet wurde, war der Link-Tag korrekt. Jetzt können zumindest unser Server und einzelne Weblogs mit gängigen RSS-FeedReadern KORREKT gelesen werden.
Als nächstes werde ich einen RSS-Output für eine Story erstellen. Dieser enthält dann eine Liste der Kommentare, welche von einem FeedReader aus gelesen werden können. Eine, wie ich finde, sehr interessante und einfache Möglichkeit, die Entwicklung einer Story mitzuverfolgen. Dazu muss diese nämlich nur noch im FeedReader abonniert werden und dieser zeigt dann an, ob neue Kommentare erstellt wurden.
Ich kann nur empfehlen, einen FeedReader zu installieren und die für einen interessanten Blogs (und später auch Stories) zu abonnieren, das erleichtert das Lesen neuer Artikel erheblich.
Für Fragen stehe ich natürlich zur Verfügung.
der feed funktioniert bestens
Hans.Mittendorfer.Uni-Linz, 18. November 2003, 15:25
H. Mittendorfer
PS: machen Sie weiter so! Ihre Belegarbeit zeigt bereits in Richtung einer "sehr guten Note" :-)
RSS-Feed für Story verfügbar!!
christian_koeppe_berlin, 24. November 2003, 13:17
/blogville/stories/606/
) und dem Hinzufügen von rss
. zur Ansicht einfach hier klicken:
/blogville/stories/606/rss
Für alle, die die Technik dahinter interessiert, will ich's hier kurz dokumentieren:
Wie bereits weiter oben beschrieben, läuft bei Antville das meiste über Skript-Dateien und Skin-Dateien. Ich habe also (angelehnt an die Funktionsweise für die Feeds von root und site) eine Skriptdatei namens
rss.hac
erstellt, welche über den Anhang rss aufgerufen wird. Innerhalb dieser Datei suche ich mit Hilfe von Antville-Funktionen und -Makros die benötigten Informationen zusammen, also header der Kommentare, den Autor etc. Diese übergebe ich dann zusammen mit dem rss.skin (welcher das Format des Outputs beschreibt, also XML) der Renderfunktion und jene setzt dann alles zusammen. Probleme gab es z.B. wenn noch keine Kommentare vorhanden waren, dafür musste ich noch einen zusätzlichen Skin namens rssNoItems.skin erstellen, welcher den Fall von noch nicht vorhandenen Kommentaren abdeckt. Ich werde versuchen, dass der Link, auf den der XML-Button zeigt, im Fall der Ansicht einer Story auch korrekt auf deren Feed zeigt. Damit kann man dann über Link-Adresse kopieren des Kontextmenüs die Adresse direkt kopieren und beim FeedReader bzw. RSS-Ticker einfügen.
Zur Limitierung der Anzahl der Beiträge
Diese ist jetzt aufgehoben, d.h. wenn man einen Blog abonniert, bekommt man in dem Feed ALLE Stories aufgelistet.
Christian Köppe
weitere zukünftige Feeds...
christian_koeppe_berlin, 24. November 2003, 19:14
Der Link zur Story: /blogville/stories/2247/
Christian Köppe
StoryFeed
joern.schmieta.berlin, 26. November 2003, 22:00
Gruss Jörn
StoryFeed Antwort
christian_koeppe_berlin, 26. November 2003, 22:50
Das schöne ist, das wir uns ja nicht auf eins beschränken müssen. Ich werde also einen Feed namens rssMitStory erstellen, welcher dann auf die übliche Weise abrufbar ist und als erstes Item die Story selber enthält. Wenn er fertig ist, werde ich es hier veröffentlichen.
Christian Köppe
RSS-Linkliste
christian_koeppe_berlin, 23. Januar 2004, 14:10
RDF Site Summary 1.0 Specification Working Group
Dies ist die Gruppe, die sich mit der Spezifikation beschäftigt. In der Newsgroup erhält man viele Tips zum Umgang mit RSS und der Verarbeitung. Auch mögliche Erweiterungen werden dort diskutiert.What is RSS?
Eine sehr gute Zusammenfassung über RSS (in englisch).-------------------------------
Und hier noch die links zu den einzelnen Spezifikationen:
RSS
Dublin Core (dc)
Syndication
Christian Köppe