Feeds

Das Feeds-AddOn ist in der Lage, RSS1/RSS2/Atom-Feeds für beliebige Mengen von Artikeln zu erzeugen. Dabei können die ausgewerteten Slots und Module eingeschränkt werden.

API

Für gewöhnlich werden Feeds im Frontend angelegt. Dies bedeutet, dass die API-Calls immer und immer wieder erfolgen, wobei allerdings bei gleichen Parametern nichts an bereits bestehenden Feeds geändert wird. Gleichzeitig ermöglicht es dieses Vorgehen, neue Feeds in Modulen anzulegen, anstatt diese hard-coded in YAML-Dateien vorzugeben.

Die Artikel, die in einem Feed enthalten sein sollen, werden über Filter konfiguriert. Dies macht es möglich, sie auf bestimmte Sprachen, Kategorien, Typen, Namen, ... zu beschränken. Die meisten verfügbaren Filter sind in den Developer Utils implementiert.

<?
// erzeugt einen Feed, der alle Artikel eines bestimmten Typs beinhaltet
$feed = WV21_Feeds::createFeed($name, $title, $filter, $modules = null, $slots = null, $sortby = 'createdate', $direction = 'DESC', $max = 10);

// Beispiel: Ein Feed, der nur die Slices des Artikels 1
// enthält, die im 'main' Slot angelegt wurden. Es sind
// alle Module ($modules = null) enthalten.
$feed = WV21_Feeds::createFeed('test', 'Mein Testfeed', new WV_Filter_Article_ID(1), null, array('main'));

Wie man sieht, bedeutet bei $modules und $slots die Angabe null jeweils “keine Beschränkung”.

Für die beiden häufigsten Usecases stehen zwei gesonderte Methoden zur Verfügung:

<?
// erzeugt einen Feed, der alle Artikel eines bestimmten Typs beinhaltet
$feed = WV21_Feeds::createFeedForArticleType($name, $title, $articleType, $modules = null, $slots = null, $sortby = 'createdate', $direction = 'DESC', $max = 10);

// erzeugt einen Feed, der alle Artikel einer Kategorie beinhaltet
$feed = WV21_Feeds::createFeedForCategory($name, $title, $category, $modules = null, $slots = null, $sortby = 'createdate', $direction = 'DESC', $max = 10);

Der Rückgabewert ist jeweils die erzeugte Feed-ID, die in den meisten Fällen dem Namen ohne Sonderzeichen entspricht. Aus dieser URL kann mit WV21_Feeds::getURL() und dem gewünschten Format eine vollständige URL erzeugt werden.

<link href="<?= WV21_Feeds::getURL($feed) ?>" rel="alternate" type="application/rss+xml" />

Warnung

Seit Version 2.2 (für SallyCMS 0.6) werden Feeds über einen Frontend-Controller ausgeliefert, der immer über /feed/[feedid] oder /feed/[feedid]/[format] verlinkt werden muss.

Standardmäßig wird eine URL für den RSS2-Feed erzeugt. Das Format kann in getURL() über den zweiten Parameter auf Atom oder RSS1 geändert werden. Wenn in der Feed-URL kein Format auftaucht, wird RSS2 angenommen (daher taucht auch kein Format in der URL aus getURL() auf).

Caching

Feeds werden für jeweils eine Stunde gecached. Die Zeit kann geändert werden, indem der Key

wv21:
  ttl: 30 # in Minuten

in der globalen Konfiguration gesetzt wird. Der Cache für alle Feeds wird bei jeglicher Änderung an Artikeln / Kategorien im Backend gelöscht.

Bemerkung

Caching ist im Entwicklermodus deaktiviert.

Inhalt

Diese Seite