Im Rahmen eines Kunden-Projekts stand ich heute vor dem Problem, die Titel der aktuellsten fünf Beiträge eines externen Blogs auf einer Drupal 6 basierten Website anzuzeigen. Genauer gesagt sollten die Titel als Liste angezeigt und jeder Beitrags-Titel mit seiner URL auf dem externen Blog verlinkt werden. Zunächst dachte ich, daß dies kein größeres Problem darstellen sollte, da Drupal mit Aggregator schon im Core ein passendes Modul mitbringt, doch ich hatte mich zu früh gefreut.
Das Problem
Das externe Blog wird auf Blogspot.com gehostet und hat standardmäßig einen Atom-Feed. In meiner Test-Installation musste ich leider feststellen, daß Aggregator Probleme beim Import von Einträgen aus diesem Feed hat. Trotz mehrmaligem manuellen Auslösen des Imports wurden keine Beiträge gefunden. Bei einem Test mit dem FeedBurner-Feed eines anderen Blogs klappte hingegen alles problemlos.
Die Recherche
Eine kurze Recherche zeigte, daß Aggregator schon seit Drupal 4.7 Probleme mit Atom-Feeds hat und dieses Problem wurde auch für Drupal 6 nie offiziell gefixt. Die beste Lösung ist derzeit der Verzicht auf Atom-Feeds und stattdessen die Nutzung von RSS-Feeds. Dies ist mit wenig Aufwand möglich, da an die Blogspot-URL lediglich ein zusätzlicher Parameter angehängt werden muss:
Atom 1.0: http://blogname.blogspot.com/feeds/posts/default
RSS 2.0: http://blogname.blogspot.com/feeds/posts/default?alt=rss
Alternativen?
Da das Problem nun schon etliche Jahre existiert und laut den beiden verlinkten Problem-Meldungen noch weitere Bugs existieren, hatte ich keinerlei Vertrauen mehr in dieses Modul und begab mich auf die Suche nach Alternativen.
Zunächst fand ich das Modul Aggregation Block, welches eine Ergänzung zu dem Modul Aggregation ist. Diese Kombination fühlte sich jedoch nicht wirklich gelungen an, da ich möglichst flexibel bei der späteren Ausgabe der Daten sein wollte.
Als nächstes fand ich das Modul Feeds, welches zur Installation noch die API-Module Chaos tool suite und Job Scheduler benötigt. Zwei dieser drei Module sind für Drupal 6 leider noch im Beta-Stadium, was mir etwas Unbehagen bereitet. Dafür bin ich bei der Ausgabe jedoch extrem flexibel, da jeder Beitrag als eigener Node importiert wird und somit eine Ausgabe des gewünschten 5er Blocks problemlos mit Views möglich ist.
Fazit
Das Modul Feeds legt die beiden neuen Node-Typen Newsfeed und Feed item an und beginnt sofort mit einem Import aller Beiträge, wenn man einen neuen Newsfeed einträgt. Standardmäßig haben die neuen Nodes keinen Autor, was ich etwas ungünstig finde. Dies lässt sich jedoch schnell im Admin-Bereich unter Strukturierung -> Feed importers -> Feed regeln. Man muss lediglich die normalen Einstellungen übersteuern und kann dann unter Processor -> Einstellungen einen Autoren festlegen.
Neben dieser kleinen Unzulänglichkeit der Default-Einstellungen scheint mir das Modul durch die Unterteilung in Fetcher (Daten-Download), Parser (Interpretation der Daten) und Processor (Speicherung der Daten, beispielsweise in Nodes) extrem mächtig zu sein.



Re: Drupal: Methoden der Feed-Aggregation
InetBiz (Gast), 12. November 2011 - 20:54
Kann ich auch via Feeds, feeds anzeigen aber nicht via node speichern. Mir geht es nur um das anzeigen von Titel & Datum, nichts speichern
Re: Drupal: Methoden der Feed-Aggregation
Jan, 14. November 2011 - 13:43
Tut mir leid, soweit ich mich erinnere habe ich bei meiner Recherche keine Lösung gefunden, die keine Speicherung als Node oder in einer eigenen DB-Tabelle vorgenommen hat.
Kommentar hinzufügen