Zum Inhalt springen

Dokumentation

TYPO3-Erweiterung zur Anzeige von RSS-/Atom-Feeds mit Gruppierung, Paginierung und Hintergrundaktualisierungen.

MPC-RSS Logo

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

  1. Fügen Sie ein Inhaltselement hinzu: Plugin > MPC RSS-Feed
  2. Klicken Sie auf „Feed hinzufügen“ und geben Sie eine oder mehrere RSS-/Atom-URLs ein
  3. 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) über PLUGIN_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

Lizenz

GPL 2.0 oder höher

Seite teilen