
Installation
composer require mpc/mpc-rss
Enable in the Extension Manager, then run ‘Maintenance > Analyse database structure’.
Quick Start
- Add a content element: Plugin > MPC RSS Feed
- Click on ‘Add feed’ and enter one or more RSS/Atom URLs
- Select a grouping mode and save
Feeds are stored as inline records directly within the content element – no storage page is required.
Background updates
Feeds are cached per URL. To keep them up to date without visitors having to wait:
Scheduler (recommended):
System > Scheduler > Add Task > "Update RSS Feeds" – Set the frequency, e.g. to every 30 minutes.
CLI:
vendor/bin/typo3 mpcrss:updatefeeds
vendor/bin/typo3 mpcrss:updatefeeds --clear-cache --cache-lifetime=3600
See “Automatic feed updates” for details and troubleshooting.
Architecture
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
Key design decisions:
- Special CType (
mpcrss_feed) overPLUGIN_TYPE_CONTENT_ELEMENT, not list_type - IRRE inline records – feeds belong to the content element, not to a storage page
- Isolated cache (
mpc_rss) – clearing the page cache has no effect on the feed data - External content is sanitised at the caching level (tags, attributes, URL schemes)
- The service layer is language-neutral; the controller translates generated group names via XLF
warmCache()Skips grouping/sorting – efficient for CLI and scheduler
Documentation
- Automatic feed updates – setting up the scheduler and CLI
- Grouping modes – Category, source, date or timeline
- Custom templates – Overriding templates and available variables
- Redirects – SEO-friendly URLs