Modul Spotlight – Activity Stream

Drupal selbst bietet mit dem Modul Aggregator die Möglichkeit, externe RSS-Feeds in eine Seite einzubinden. Mächtigere Module, wie SimpleFeed oder FeedAPI können da schon eine Menge mehr. Sie sind super geeignet, um mit Hilfe von CCK, Views und Token aus RSS-Feeds strukturierte Inhalte zu extrahieren und in Nodes zu schreiben – ganz im Sinne von Drupal.

Das Modul „Activity Stream“ bringt eine ähnliche Funktionalität mit. Anders als die oben genannten Module hat es aber nicht einen zentralen Ansatz, sondern erlaubt es jedem angemeldeten Benutzer, eigene „Streams“ in der Profilverwaltung anzugeben. Beispielsweise ein Podcast-Channel, oder ein eigenes Blog. Wer Friendfeed, Lifestream oder ähnliche Dienste kennt, dem wird das bekannt vorkommen. Per Cron werden die externen Feeds in die Drupal-Site geladen, einzelne Beiträge als Nodes angelegt und auf dem eigenen Profil in Teaserform angezeigt. Spezielle Dienste, wie Twitter, Digg, Del.icio.us, Last.fm und Flickr werden vom Modul bereits gesondert behandelt und mit eigenem Icon versehen. Bei Blogs wird das Favicon angezeigt – schick.

Für die Anzeige der Activity Streams eines Users im Profil, genügt dieser Codeschnipsel, der wahlweise in einen Block, ins Template oder in ein Panel kommt:

<?php
if (arg(0) == 'user' && is_numeric(arg(1))) {
  $uid = arg(1);
  $items = _activitystream_get_activity(user_load(array('uid'=>$uid)));
  print theme('activitystream', $items);
}
?>

Doch damit fangen die Möglichkeiten erst an: Wenn diese Streams erst einmal in Node-Form vorliegen, sind folgende Views nur noch Formsache:

  • Zeige alle Blogbeiträge von Usern
  • Zeige alle Flickr-Bilder von Usern einer bestimmten Gruppe
  • Zeige die Tweets von Usern, die an einem bestimmten Event teilnehmen

Fazit: Eine echte Bereicherung für Community-Seiten und großes Potenzial für die Zukunft.

Modul Spotlight – Block Refresh

Eine schöne Eigenschaft von Community-Seiten ist die Anzeige der Benutzer, die gerade online sind. Drupal bietet dafür bereits im Core einen Block „Who’s online“.

Das Usability Problem: Werden auf einer Seite Videos oder Chats eingebettet, verweilen die Besucher zwar, interagieren aber nicht mehr mit der eigentlichen Webseite (also dem Drupal CMS), sondern mit den eingebetteten Inhalten (z.B. Youtube, Flash-Chat). Zum einen wird man nach einiger Zeit selbst nicht mehr für andere Besucher als online angezeigt, zum anderen wird der Inhalt des Blocks „Who’s online“ nicht aktualisiert. So kann es passieren, dass zwar Benutzer im Chat sind, aber nicht als „online“ auf der Startseite angezeigt werden.

Abhilfe schafft hier das Modul „Block Refresh“. Es klinkt sich in die Blockkonfiguration von Drupal ein. Nun lässt sich jeder Block per Ajax aktualisieren. Es ist einstellbar, ob der Benutzer selbst einen Reload-Knopf im Block angezeigt bekommt, oder ob sich der Block nach einem einstellbaren Zeitintervall (default: 120 s) selbst aktualisiert. Für das obige Problem benutzt man zweckmäßig gleich den Block „Who’s online“, um beide Fliegen mit einer Klappe zu schlagen. So erscheint man eben auch „online“, wenn man einige Zeit nicht an der Tastatur ist, aber der Browser mit der Seite geöffnet bleibt.