REDAXO Feed Aggregator
- Abruf von YouTube-, Vimeo- und RSS-Streams.
- Dauerhaftes Speichern der Beiträge
- Speicherung des Hauptmediums Im data-Ordner des AddOns
- Nachträgliche Aktualisierung der Beiträge (z.B. nach einem Update / einer Korrektur)
- Erweiterbar durch eigene Feed-Provider
- Feeds können in Watson gesucht werden
feed suchbegriff
- Abruf aller oder einzelner Feeds per Cronjob
Im REDAXO-Backend unter Installer
abrufen und installieren
- Im REDAXO-Backend
AddOns
>Feeds
aufrufen, - dort auf das
+
-Symbol klicken, - den Anweisungen der Stream-Einstellungen folgen und
- anschließend speichern.
Hinweis: Ggf. müssen zusätzlich in den Einstellungen von Feeds Zugangsdaten (bspw. API-Schlüssel) hinterlegt werden, bspw. bei Vimeo und YouTube.
Die Feeds können manuell unter AddOns
> Feeds
abgerufen werden, oder in regelmäßigen Intervallen über einen Cronjob abgerufen werden:
- Im REDAXO-Backend unter
AddOns
>Cronjob
aufrufen, - dort auf das
+
-Symbol klicken, - als Umgebung z.B.
Frontend
auswählen, - als Typ
Feeds: Feeds abrufen
auswählen, - den Zeitpunkt festlegen (bspw. täglich, stündlich, ...) und
- mit
Speichern
bestätigen.
Jetzt werden Feeds-Streams regelmäßig dann abgerufen, wenn die Website aufgerufen wird. Weitere Infos zu REDAXO-Cronjobs.
Um ein Feed auszugeben, können die Inhalte in einem Modul oder Template per SQL oder mit nachfolgender Methode abgerufen werden, z.B.:
<?php
$stream_id = 1;
// Mediamanager Typ mit feeds als erster Effekt
$media_manager_type = 'feeds_thumb';
$stream = rex_feeds_stream::get($stream_id);
$items = $stream->getPreloadedItems(); // Standard gibt 5 Einträge zurück, sonst gewünschte Anzahl übergeben
foreach($items as $item) {
// Titel ermitteln und alles verlinken
print '<a href="'. $item->getUrl() .'" title="'. rex_escape($stream->getTitle()) .'">';
// Bild ausgeben
print '<img src="'.rex_media_manager::getUrl($media_manager_type,$item->getId() .'.feeds').'" alt="'. rex_escape($item->getTitle()) .'" title="'. rex_escape($item->getTitle()) .'">';
print '<p>'.rex_escape($item->getContent()).'</p>';
print '</a>';
}
?>
Die Bilder eines Feeds werden im AddOn-Data-Ordner unter data/addons/feeds/media
gespeichert. Für die Ausgabe der Bilder stehen zwei gleichwertige Möglichkeiten zur Verfügung.
Neu seit 5.0.0
// Mit Media Manager Effekt
$media_url = $item->getMediaManagerUrl('feeds_thumb');
echo '<img src="'.$media_url.'" alt="Mein Bild">';
Dies ist die traditionelle Methode zur Ausgabe des Mediums.
Wichtig hierbei die Endung .feeds
.
// $item ist ein rex_feeds_item Objekt
$media_url = rex_media_manager::getUrl('feeds_thumb', $item->getId() .'.feeds');
echo '<img src="'.$media_url.'" alt="Mein Bild">';
<?php
$stream_id = 1;
// Media Manager Typ wo der Feeds-Effekt als erster Effekt eingerichtet ist
$media_manager_type = 'feeds_thumb';
$stream = rex_feeds_stream::get($stream_id);
$items = $stream->getPreloadedItems(); // Standard gibt 5 Einträge zurück
foreach($items as $item) {
// Titel ermitteln und verlinken
echo '<a href="'. $item->getUrl() .'" title="'. rex_escape($stream->getTitle()) .'">';
// Variante 1: Klassische Methode
echo '<img src="'.rex_media_manager::getUrl($media_manager_type, $item->getId() .'.feeds').'"
alt="'. rex_escape($item->getTitle()) .'">';
// ODER Variante 2: Neue Methode
echo '<img src="'.$item->getMediaManagerUrl($media_manager_type).'"
alt="'. rex_escape($item->getTitle()) .'">';
echo '<p>'.rex_escape($item->getContent()).'</p>';
echo '</a>';
}
?>
- Im REDAXO-Backend unter Media Manager einen neuen Typ anlegen
- Als ersten Effekt "Datei: Aus Feeds einlesen" auswählen
- Weitere gewünschte Effekte wie Resize, Crop etc. hinzufügen
Wichtig: Der Feed-Effekt muss immer als erster Effekt in der Effektkette eingerichtet sein.
Hinweis: Beide Methoden der Bildausgabe sind in ihrer Funktionalität identisch. Die klassische Methode wird aus Gründen der Abwärtskompatibilität weiterhin unterstützt.
Über das Cronjob-Addon lässt sich ein PHP-Cronjob ausführen, um nicht mehr benötigte Einträge aus der Datenbank zu entfernen. Dazu diese Codezeile ausführen und ggf. die Werte für stream_id
und INTERVAL
anpassen.
<?php rex_sql::factory()->setQuery("DELETE FROM rex_feeds_item WHERE stream_id = 4 AND createdate < (NOW() - INTERVAL 2 MONTH)"); ?>
Alternativ:
<?php rex_sql::factory()->setQuery("DELETE t1 FROM rex_feeds_item t1 JOIN (SELECT id FROM rex_feeds_item WHERE stream_id = 1 ORDER BY id DESC LIMIT 50,500) t2 ON t1.id = t2.id"); ?>
Dies löscht nicht nach Datum, sondern nach Anzahl. Vorteil: Wenn viele Posts immer geladen werden, kann sich die die DB sehr schnell aufblähen und Probleme beim Backup machen.
Feeds kann Inhalte auch anderer Quellen als die der mitglieferten Provider annehmen.
Hierzu erstellt man eine extended Class der rex_feeds_stream_abstract
im lib Ordner des eigenen AddOns oder des project-AddOns an, z.B.: rex_feeds_stream_my_class
. Man kann sich dabei an die mitgelieferten Classes im Ordner /lib/streams
halten. Alle möglichen Methoden findet man in der rex_feeds_stream_abstract
-Class unter /lib/stream_abstract.php
. Dort ruft man die Streamdaten ab und ordnet diese den Tabellenspalten zu.
Anschließend meldet man den neuen Provider wie folgt in der boot.php an:
rex_feeds_stream::addStream("rex_feeds_stream_meine_klasse");
Feeds kommt mit 2 Extension Points, namentlich FEEDS_STREAM_FETCHED
nach Abruf eines Streams sowie FEEDS_ITEM_SAVED
nach dem Speichern eines neuen Eintrags.
So lassen sich nach Abruf eines oder mehrerer Streams bestimmte Aktionen ausführen.
Weitere Infos zu Extension Points in REDAXO unter https://www.redaxo.org/doku/master/extension-points
Zum GitHub-Repository von Feeds
Gebe einfach die URL zum Feed ein. ;-)
Tipp: Mastodon-Feed auslesen: https://phpc.social/@REDAXO.rss
Zum Auslesen des Streams werden User-ID, Access Token und ein Client Secret benötigt.
Alle Infos dazu unter: https://developer.vimeo.com/api/guides/start
Die Stream-Tabelle lässt sich im YForm-Tablemanager importieren. Dadurch ist es möglich eine eigene Oberfläche für die Redakteure bereitzustellen.
AddOn, siehe LICENSE
Vendoren, siehe Vendors-Ordner des AddOns