Inhalte durchsuchen
Neueste Kommentare
- Ernst: Auch ein guter Ansatz: Den “Bewahrern” den Wind durch Beweislastumkehr aus den Segeln nehmen....
- Thilo B.: Auf die lizenzrechtlichen Belange wird in den meisten Artikeln zu BYOD leider nicht eingegangen… Es...
- Ernst: new-iPad und Multi-SIM Karten machen bei vielen Benutzern Probleme. Ich kann das Problem bestätigen. Bei...
- Anja Grunau: Klasse Idee!! Nur gut, dass die Beta-Version pünktlich zum 01. April fertig geworden ist
- Heiner Busch: Für User mit iCloud Backup: Wenn man beispielsweise das Backup eines iPad 2 auf dem neuen iPad...
RSS-Feed abonnieren
Empfehlungen / Blogroll
Inhalt
Anleitung: Mit Yahoo! Pipes Web 2.0 barrierefrei ins Stadtportal integrieren
Der folgende Artikel wurde uns von Claus Arndt, Internetbeauftragter der Stadt Moers, für die Veröffentlichung zur Verfügung gestellt. Lesen Sie nun Teil 1:
Gäbe es Yahoo! Pipes nicht, man müsste es erfinden! Gäbe es XML-Datenquellen in der eGovernment-Suite nicht, bräuchte man Pipes nicht. Umso schöner, dass es beides gibt. In zwei Beiträgen soll gezeigt werden, wie Pipes und XML-Datenquellen sehr schön zusammenwirken und so das Stadtportal um interessante Komponenten erweitert werden kann.
Was ist Pipes? Pipes ist eine so genannte Mashup-Plattform, auf der man mit relativ einfachen Mitteln und recht coolem Styling Inhalte aus verschiedene Web-Quellen zusammenmischen kann.
Was war der Plan? In den Nachrichten-Tabs auf der Startseite von moers.de sollten auch die Twitter- und Facebookmeldungen untergebracht werden. Teilweise handelt es sich ja hierbei um Meldungen, die in Erweiterung der normalen Pressearbeit exklusiv für diese beiden Plattformen verfasst werden. Durch die Integration dieser Inhalte in das Stadtportal können auch Web 2.0 – ferne Usergruppen von diesen Infos profitieren. Darüber hinaus hat die Einbindung den Vorteil, dass interessanter Content auch weitestgehend barrierefrei präsentiert werden kann – gerade Facebook glänzt ja nicht gerade zum Beispiel mit validem Code.
Für dieses Vorhaben musste – da die maximale Zahl der Content-Felder (10) schon erreicht war – eine Datenquelle weichen. Getroffen hat es die Datenquelle, die die Nachrichten unserer Städtischen Betriebe Moers – SBM - zur Anzeige gebracht hat (übrigens auch über Pipes und XML-DQ). Da ich aber diese Meldungen weiterhin präsentieren wollte, musste ein neuer Mix her: die Pipe mit dem schönen Namen „Finale Version von Presse plus SBM“ (der Name zeigt schon an, dass es andere (Test-)Versionen gegeben hat). In dieser Pipe werden die städtischen Pressemeldungen und die Nachrichten der SBM zusammengemixt. Das Ausgangsmaterial kommt aus den beiden Feeds http://www.moers.de/www/webio.nsf/generateViewFromTemplate?OpenAgent&layout=RSS_2.0Pipes und http://sbm-moers.de/323-0-rss.
In Pipes kann man nun diese beiden Feeds zu einem Feed zusammenführen. Leider ist es damit nicht getan, da die Feeds unterschiedlichen und teilweise unsauberen Quellcode liefern (damit meine ich nicht den Feed vom KRZN
).
Die fertige Pipe findet man unter http://pipes.yahoo.com/pipes/pipe.edit?_id=9e9885c68c3c0e8e216db79d5954a8df
Wie heißt es so schön: nur gucken, nicht anfassen. Also bitte nicht mit der Pipe spielen (wenn andere User das überhaupt können)! Zum Spielen immer einen Clone anlegen…
Und nun der Reihe nach:
Schritt 1:
Ich verwende 2 Mal das Modul „Fetch Feed“, um die beiden Feeds in die Pipe zu übernehmen.

Schritt 2:
Den SBM-Feed verknüpfe ich mit dem Regex-Modul, mit dessen Hilfe reguläre Ausdrücke auf einzelne Attribute angewendet werden können. Hört sich für Nicht-Programmierer wie mich erst einmal schlimm an. Ist es wohl auch, aber die für meine Zwecke notwendigen Kenntnisse konnte ich mir dank des Internets aneignen (siehe zum Beispiel http://bit.ly/cBHI3C).

Was passiert hier? Dem Inhalt des title-Wertes wird der Text „Pressemeldung der Städtischen Betriebe Moers: “ vorangestellt. Das Zeichen ^ steht einfach für Anfang. Dies bewirkt bei der späteren Webausgabe, dass zur Kenntlichmachung der Quelle jede Nachricht der SBM mit dem entsprechenden Textbaustein eingeleitet wird.
Dies könnte man auch über den XSLT-Code in der XML-Datenquelle lösen, in diesem Fall geht es über Pipes.
Schritt 3:
Auch bei dem Pressefeed der Stadt beginne ich mit dem Regex-Modul. Allerdings setze ich es hier ein, um ein kleines Problem bei der Umsetzung des Feeds durch Pipes zu begegnen. Pipes kam mit dem Wert für die Zeitzone nicht klar, wodurch sich das Datum um einen Tag verschob.

Ich ändere den Wert von +0100 auf -0100 – dann passt es. Übrigens habe ich das Phänomen hier zum ersten Mal erlebt.
Schritt 4:
Jetzt kommt das Date Formatter-Modul innerhalb eines Loops zum Einsatz. Dies war notwendig, um die Ausgabe des Datums für beide Feeds zu vereinheitlichen. Im SBM-Feed wird nämlich nur das Datum im Format tt.mm.jjjj ausgegeben, im Presse-Feed aber so: Thu, 16 Sep 2010 16:22:19 +0100

Der Pipes-Hilfe zum Date Formatter kann man die möglichen Parameter sehr gut entnehmen. Hier lauten sie: %d.%m.%Y %I:%M Uhr
Ich hole mir also den Wert aus dem Feld pubDate und schreibe sie geändert in „16.09.2010 11:46 Uhr“ wieder in dieses Feld hinein. Die Uhrzeit nehme ich an dieser Stelle auch noch mit, da sie für die minutengenaue Sortierung noch benötige (später schneide ich hinter dem Datum ab – siehe unten). Die neuste Pressemeldung an einem Tag soll immer oben stehen.
Exkurs: Standardmäßig wird bei unseren Feeds als Uhrzeit immer 00:00:00 ausgeben. Grundlage für die Berechnung ist bei dem Presse-Feed nämlich das Feld „Datum“. Dieses enthält aber nur das reine Datum, nicht die Uhrzeit. Daher habe ich den Pseudotag „DatumIn DateTimeFormat“ der RSS-Datenquelle modifiziert, so dass der Berechnung der Uhrzeit jetzt @created zu Grunde liegt (danke für den Tipp, Sven Petri!). Der Pseutotag lautet jetzt so:
a:=Datum;
w:=@Word(“Sun Mon Tue Wed Thu Fri Sat”; ” “; @Weekday(@Date(a)));
d:=@Right(“0″+@Text(@Day(a)); 2);
m:=@Word(“Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec”; ” “; @Month(a));
y:=@Text(@Year(a));
@If(@Hour(a)<0; @Set(“a”;@Time(0;0;0)); “”);
tm:=@Text(@Time(@Created));
tz:=@ReplaceSubstring(@TimeZoneToText(@GetCurrentTimeZone; “S”); “GMT”:”:”; “”);
w +”, ” +@Implode(d:m:y:tm:tz; ” “)
Schritt 5:
Jetzt kürze ich die Ausgabe des Presse-Feeds mit dem Truncate-Modul auf 6 Einträge, da die Liste ja nicht so lang werden soll und die Summe beider Feeds nicht zu groß wird (von den SBM kommen in der Regel weniger Meldungen).

Schritt 7:
Im 7. Schritt führe ich beide Feeds mit dem Union-Modul zusammen.

Schritt 8:
Wiederum mit Hilfe des Loop-Modules – allerdings diesmal im Zusammenspiel mit dem Substring-Modul – kürze ich jede Beschreibung auf maximal 500 Zeichen. Quell- und Zielwert sind wieder identisch (description).

Schritt 9:
Hier kürze ich die Ausgabe des vereinten Feeds auf maximal 12 Einträge.

Schritt 10:
In Schritt 10 baue ich mit einen eigenen, kleinen RSS-Feed zusammen. Dies ist nur notwendig, da ich einem bestimmten Feld (author) einen neuen Wert zuweisen möchte: den Inhalte des Feldes pubDate. Alle anderen Felder werden 1 : 1 übernommen.

Die Notwendigkeit ergibt sich aus dem Umstand, das bei der späteren Berechnung des Feeds durch Pipes in das Feld pubDate immer das Datum vollständig im englischen Format (Beispiel: Thu, 16 Sep 2010 04:46:00 +0000) eingetragen wird, auch wenn in der Vorberechnung der Pipes im unteren Debugger-Fenster hier nur das Datum nach dem Muster tt.mm.jjjj zu sehen ist.
Daher rührt der Missbrauch des Feldes author, das wir ansonsten nicht benötigt hätten. Der Inhalt dieses Feldes wird später 1:1 ausgegeben.
Schritt 11:
Jetzt kommt noch einmal das Regex-Modul zum Einsatz, da wir (siehe oben) aus dem Presse-Feed die Uhrzeit noch mitschleppen. Die schneide ich mit dem regulären Ausdruck „ .*“ einfach ab.

Schritt 12:
Zum Schluss sortiere ich die Einträge nur noch absteigend nach Datum (wegen der Uhrzeit nutze ich das Feld pubDate)

und beende die Pipe mit

Die fertige Pipe kann man nach dem Speichern über das obere Menü mit „Run Pipe“ in die Vorschau bringen und aus der Vorschau heraus über „Get as RSS“ den RSS-Feed erzeugen. Den hierdurch generierten Link setzt man in die XML-Datenquelle ein.
Ein paar weitere Hinweise
Die einzelnen Module werden auf der linken Seite des Pipes-Editors gelistet. Sie lassen sich einfach per Drag and Drop in den mittleren Rahmen ziehen. Wenn man auf ein Modul klickt, wird im Debugger-Fenster unten sofort die bis zu diesem Modul gültige Ausgabe berechnet und angezeigt. Im Debugger gibt es auch einen Refresh-Link. So kann man sehr schnell jede Anpassung überprüfen.
Wichtig: Wurde nach Abspeichern der Pipe der RSS-Feed einmal generiert, werden nachfolgende Änderungen im Feed nicht sofort sichtbar. Es dauert eine ganze Weile (zum Teil mehrere Stunden), bis die im Editor schon sichtbaren Änderungen im RSS-Feed nachvollzogen werden. Pipes berechnet die Feeds eben nur in gewissen Abständen neu.
Wer es schneller mag: einfach eine Kopie (Save a Copy) der Pipe anlegen und hiervon den RSS-Feed generieren.

Hallo,
zunächst mal vielen Dank für die super Anleitung.
Ich habe allerdings ein kleines Problem.
Bis Schritt 7 klappt alles wunderbar.
Jedoch bei Schritt 8 wird bei mir kein Inhalt angegeben, obwohl dieser auf 200 Zeichen steht.
Dann ist es noch so, dass wenn ich meine beiden Feeds vereine, dass am Ende nur insgesamt 5 Nachrichten angezeigt werden, obwohl ich den Schritt 9 ausgelassen habe.
Mein Ziel ist, dass ich von jedem dort eingebundenen Feed 5 Artikel anzeige….wenn dies dann 3 Feeds sind, müssten insgesamt 15 Artikel da sein…oder muss ich das vorgeben….??
Grüße
Lefdi
Kommentar #75 von Lefdi — 19.11.2010 um 13:26 Uhr
Hallo,
bitte den Link zur Pipe ‘mal hier posten. Dann kann ich einen Blick d’rauf werfen.
Beste Grüße
Claus Arndt
Kommentar #80 von Claus — 22.11.2010 um 15:33 Uhr
Hallo,
das ganze hatte ich auf http://www.radblogs.de/testseite getestet.
Hab zwischenzeitlich rausgefunden, dass es am Feedburner liegt.
Der gibt die Daten wohl nicht korrekt weiter.
Momentan wird ein Fehler angezeigt, muss ich mir mal genauer anschauen.
Also, Feedburner sollte am besten deaktiviert sein, sonst klappt das nicht.
Lefdi
Kommentar #81 von Lefdi — 22.11.2010 um 17:41 Uhr
hallo
super anleitung und funktioniert einwandfrei. Kurze Frage noch, Bei einigen Feed welche ich benutze, ist eine verkürze Version mit schon 500 Zeichen. Es gibt auch ein item.link welche auf den ganzen artikel zeigt, weist du wie ich den im footer des artikels einbauen könnte?
Kommentar #554 von Mike — 17.02.2011 um 15:09 Uhr