
Voraussetzungen
- TYPO3 13.x oder 14.x
- PHP 8.2+
Installation
composer require mpc/mpc-rss
Im Erweiterungsmanager aktivieren, anschließend „Wartung > Datenbankstruktur analysieren“ ausführen.
Schnellstart
- Fügen Sie ein Inhaltselement hinzu: Plugin > MPC RSS-Feed
- Klicken Sie auf „Feed hinzufügen“ und geben Sie eine oder mehrere RSS-/Atom-URLs ein
- Wählen Sie einen Gruppierungsmodus aus und speichern Sie die Einstellungen
Feeds werden als Inline-Datensätze direkt im Inhaltselement gespeichert – es ist keine Speicherseite erforderlich.
Hintergrundaktualisierungen
Feeds werden pro URL zwischengespeichert. Damit sie immer aktuell bleiben, ohne dass Besucher warten müssen:
Scheduler (empfohlen):
System > Scheduler > Add Task > "Update RSS Feeds" – Stellen Sie die Häufigkeit z. B. auf alle 30 Minuten ein.
CLI:
vendor/bin/typo3 mpcrss:updatefeeds
vendor/bin/typo3 mpcrss:updatefeeds --clear-cache --cache-lifetime=3600
Weitere Informationen und Hinweise zur Fehlerbehebung finden Sie unter „Automatische Feed-Aktualisierungen“.
Architektur
Request
└─ FeedController::listAction()
├─ FeedRepository → inline feed records from tt_content
└─ FeedService::fetchGroupedByCategory()
├─ fetchFeedItems() per-URL HTTP fetch + XML parse + cache
├─ deduplicateItems() link-based dedup across feeds
├─ groupItems() category / source / date / none
└─ sortAndSliceGroups() date-desc sort + maxItems limit
Wichtige Designentscheidungen:
- Spezieller CType (
mpcrss_feed) überPLUGIN_TYPE_CONTENT_ELEMENT, nicht list_type - IRRE-Inline-Datensätze – Feeds gehören zum Inhaltselement, nicht zu einer Speicherseite
- Isolierter Cache (
mpc_rss) – das Leeren des Seiten-Caches hat keine Auswirkungen auf die Feed-Daten - Externe Inhalte werden auf der Caching-Ebene bereinigt (Tags, Attribute, URL-Schemas)
- Die Service-Ebene ist sprachneutral; der Controller übersetzt generierte Gruppenbezeichnungen über XLF
warmCache()Überspringt Gruppierung/Sortierung – effizient für CLI und Scheduler
Inhaltssicherheitsrichtlinie
Feed-Elemente können auf externe Bilder verweisen (entry.image) und auf externe
Artikel verweisen. Da die Hosts der Feed-Bilder nicht im Voraus bekannt sind, enthält die Erweiterung eine
Frontend-Richtlinie (Configuration/ContentSecurityPolicies.php), die img-src
um das https: Schema erweitert. Wenn Sie eine strengere Richtlinie bevorzugen, überschreiben Sie diese in Ihrem Website-Paket
, um nur die spezifischen Hosts zuzulassen, von denen Ihre Feeds Bilder bereitstellen, z. B.:
use TYPO3\CMS\Core\Security\ContentSecurityPolicy\Directive;
use TYPO3\CMS\Core\Security\ContentSecurityPolicy\Mutation;
use TYPO3\CMS\Core\Security\ContentSecurityPolicy\MutationCollection;
use TYPO3\CMS\Core\Security\ContentSecurityPolicy\MutationMode;
use TYPO3\CMS\Core\Security\ContentSecurityPolicy\Scope;
use TYPO3\CMS\Core\Security\ContentSecurityPolicy\SourceScheme;
use TYPO3\CMS\Core\Type\Map;
return Map::fromEntries([
Scope::frontend(),
new MutationCollection(
// Restrict to the specific feed image hosts you use rather than a wildcard.
new Mutation(MutationMode::Extend, Directive::ImgSrc, SourceScheme::https),
),
]);
Die Erweiterung gibt niemals Inline-Skripte oder -Stile aus, daher ist keine script-src / style-src
Lockerung erforderlich.
Dokumentation
- Automatische Feed-Aktualisierungen – Einrichtung von Scheduler und CLI
- Gruppierungsmodi – Kategorie, Quelle, Datum oder Zeitleiste
- Benutzerdefinierte Vorlagen – Vorlagen und verfügbare Variablen überschreiben
- Weiterleitung – SEO-freundliche URLs
Lizenz
GPL 2.0 oder höher