Terug naar hoofdinhoud
Newsfeeds in Joomla
Op deze pagina
# Topics

Newsfeeds in Joomla

11 juni 2026

Bijna elk onderdeel van Joomla is ontworpen om je eigen content te publiceren, zoals artikelen, contactpersonen en banners. News Feeds vormt daarop de uitzondering. Het is de enige corecomponent die precies het tegenovergestelde doet: hij haalt content op van andere websites en toont die op die van jou.

In de praktijk is een News Feed een abonnement op een externe RSS- of Atom-feed. Je geeft Joomla een URL en Joomla haalt automatisch de nieuwste koppen van dat adres op en toont ze als een lijst. Geen kopiëren en plakken, geen handmatige updates. Zodra de bron iets nieuws publiceert, wordt dat ook zichtbaar op jouw pagina.

Joomla's ingebouwde RSS- en Atom-reader, van installatie tot het onderliggende ontwikkelaarsmodel.

In dit artikel ontdek je hoe de News Feeds-component (com_newsfeeds) werkelijk werkt. Je leert de basisprincipes voor website-eigenaren, de praktische configuratie voor beheerders en de technische details voor ontwikkelaars. Je ziet hoe je feeds aanmaakt, hoe Joomla ze ophaalt en verwerkt, waar de gegevens worden opgeslagen en hoe je de meest voorkomende valkuilen voorkomt.

1. De basis

1.1 De twee bouwstenen

News Feeds heeft slechts twee concepten die je moet kennen:

ConceptWat het isDatabasetabel
News Feed Een abonnement op een externe RSS- of Atom-URL. #__newsfeeds
Categorie Een groep feeds, gebruikt voor lijsten en toegangsbeheer. #__categories

Een News Feed behoort altijd tot precies één categorie. Dit is dezelfde geneste categorieboom die artikelen gebruiken. Als je Joomla-categorieën al kent, begrijp je dus al het grootste deel van deze component. Er zijn geen klanten, formulieren of creatieve inhoud, alleen "een URL die we ophalen en weergeven".

1.2 De bewegende onderdelen

Het helpt om de volledige keten in één overzicht te zien:

Categorie ── News Feed → externe URL → RSS/Atom XML → geparseerde items
              (record)    (linkveld)    (live opgehaald) (weergegeven lijst)
  • De News Feed is een opgeslagen record dat verwijst naar een feed-URL.
  • De categorie gebruik je om feeds te groeperen voor lijstweergaven en rechten.
  • De feed zelf staat op de server van iemand anders. Joomla haalt deze op wanneer de pagina wordt opgebouwd.

Dit is het belangrijkste idee om te onthouden: vrijwel alles in Joomla slaat jouw gegevens op. News Feeds slaat een verwijzing op naar gegevens die niet van jou zijn.

1.3 Waar vind je het?

In de Joomla 6-backend beheer je feeds op twee plaatsen:

Componenten → News Feeds → Feeds        (de abonnementen)
Componenten → News Feeds → Categorieën  (groepering)

De weergave aan de voorkant van de website wordt aangestuurd door menu-items:

Menu's → Nieuw → News Feeds
         → (Enkele News Feed / Lijst in categorie / Lijst met alle categorieën)

1.4 Wat bevat een News Feed eigenlijk?

Een feedrecord bevat slechts een beperkt aantal velden:

VeldDoel
Naam De interne naam en zichtbare titel van de feed.
Link De RSS- of Atom-feed-URL. Dit is het belangrijkste veld van het record.
Categorie De com_newsfeeds-categorie waarin de feed staat.
# Artikelen numarticles, het aantal items dat moet worden weergegeven.
Cachetijd cache_time, de gewenste vernieuwingsinterval in seconden (zie deel 7).
Feedrichting rtl, voor rechts-naar-links-talen.
Afbeeldingen Twee optionele afbeeldingen rond het feedblok.

Weergaveopties zoals "Feedafbeelding tonen", "Itembeschrijvingen tonen" en "Aantal tekens" worden opgeslagen als JSON in de kolom params.

Naar boven

2. News Feeds aanmaken

2.1 Maak eerst een categorie aan

Een feed moet altijd in een categorie staan, dus maak die eerst aan:

Componenten → News Feeds → Categorieën → Nieuw

Dit is een gewone Joomla-categorie met extension = com_newsfeeds. De categorie gebruikt dezelfde geneste boomstructuur, dezelfde toegangsrechten en dezelfde knop Herstellen als artikelcategorieën.

2.2 Maak de News Feed aan

Voeg daarna de feed zelf toe:

Componenten → News Feeds → Feeds → Nieuw

Drie velden zijn verplicht:

  • Naam, de titel van de feed.
  • Link, de feed-URL, bijvoorbeeld https://www.joomla.org/announcements?format=feed&type=rss.
  • Categorie, de com_newsfeeds-categorie waarin de feed wordt geplaatst.

Tip: veel Joomla-sites bieden zelf RSS-feeds aan. Vaak kun je ?format=feed&type=rss toevoegen aan de URL van een categorieweergave om een bruikbare feed-URL te krijgen.

2.3 Weergave-instellingen van een feed

Elke feed heeft een aantal instellingen die bepalen hoe de items worden weergegeven:

VeldEffect
# Artikelen Beperkt het aantal weergegeven items (numarticles).
Feedafbeelding tonen Toont het logo of de afbeelding van de feed (show_feed_image).
Feedbeschrijving tonen Toont de kanaalbeschrijving (show_feed_description).
Itembeschrijving tonen Toont de samenvatting van elk item (show_item_description).
Tekens Beperkt de lengte van itembeschrijvingen (feed_character_count).
Volgorde van feeditems Nieuwste eerst (des) of oudste eerst (asc).
Feedrichting Past de tekstrichting aan voor rechts-naar-links-feeds (rtl).

Elk veld heeft ook de optie Globaal gebruiken. De standaardwaarden worden ingesteld via de componentopties.

2.4 De twee omlijstende afbeeldingen

Een feed kan twee afbeeldingen bevatten (image_first en image_second), elk met een alt-tekst, onderschrift en uitlijning:

[ image_first ]   ← bijvoorbeeld een partner- of sponsorlogo
   ...feeditems...
[ image_second ]

Met float_first en float_second bepaal je of de afbeelding links, rechts of zonder uitlijning wordt weergegeven. Handig wanneer je een gesyndiceerd feedblok wilt voorzien van een partnerlogo.

2.5 Geen aangepaste velden

In tegenstelling tot Contact en Artikelen ondersteunt com_newsfeeds geen aangepaste velden. Er bestaat dus geen context "Velden → News Feeds".

Dat is logisch: de inhoud van een feed komt van een externe bron. Aangepaste velden zouden nergens zinvol kunnen worden weergegeven. Wil je feeds groeperen of labelen, gebruik dan categorieën.

Naar boven

3. News Feeds weergeven

3.1 Een feed doet niets zonder een menu-item

Net als de meeste Joomla-inhoud is een News Feed slechts een record totdat een menu-item deze weergeeft. Er zijn drie menu-itemtypen:

Menu-itemtypeWat het toont
Enkele News Feed Eén feed die wordt opgehaald en weergegeven als een lijst met items.
News Feeds in een categorie weergeven Een lijst met feeds (links) binnen één categorie.
Alle News Feed-categorieën weergeven De categorieboom als lijst met links.

Let op het belangrijke verschil: de lijstweergave toont de feeds zelf, niet de items binnen die feeds. Alleen de weergave Enkele News Feed haalt daadwerkelijk koppen en nieuwsitems op.

3.2 De weergave Enkele News Feed

Deze weergave combineert de instellingen van de feed met de opties van het menu-item. Het resultaat ziet er ongeveer zo uit:

[ feedafbeelding ]   Feedtitel
                     Feedbeschrijving
                     ────────────────
                     • Nieuwsitem 1   → link naar bron
                       itembeschrijving (ingekort)
                     • Nieuwsitem 2   → link naar bron
                     • ... tot numarticles

Elke kop verwijst naar het oorspronkelijke artikel op de website van de bron, niet naar een pagina op je eigen website.

3.3 De weergave-erfenis op drie niveaus

Of een bepaald onderdeel wordt weergegeven, wordt volgens een vaste volgorde bepaald. Dit is hetzelfde patroon dat ook door Contacten en Banners wordt gebruikt:

News Feed (bewerkscherm)      Tonen / Verbergen / Globaal gebruiken
   └─ Menu-itemopties         Tonen / Verbergen / Globaal gebruiken
        └─ Componentopties    (globale standaardinstelling)

Globaal gebruiken vormt hierbij de verbindende schakel. Stel een waarde één keer in via de componentopties en overschrijf deze alleen waar nodig, per menu-item of per feed.

3.4 Template-overrides

Elke weergave kan per template worden overschreven:

components/com_newsfeeds/tmpl/newsfeed/default.php
templates/<jouw_template>/html/com_newsfeeds/newsfeed/default.php   ← override

Hier kun je van een eenvoudige lijst met koppen bijvoorbeeld kaarten, een ticker of een tweekolomsweergave maken. De gegevens (de opgehaalde feed) en de presentatie (de layout) blijven gescheiden. Je overschrijft daarom altijd de weergave, nooit de parser.

3.5 De snelle oplossing: mod_feed

Er bestaat ook een tweede, veel lichtere manier om een feed op een pagina te plaatsen: de standaardmodule Feedweergave.

Content → Sitemodules → Nieuw → Feedweergave   (mod_feed)

Beide oplossingen zijn bedoeld voor verschillende situaties:

 com_newsfeeds (component)mod_feed (module)
Feedrecord opslaan Ja (#__newsfeeds) Nee, URL wordt rechtstreeks in de module ingevoerd
Categorieën Ja Nee
Meerdere feeds beheren Ja Eén feed per module-instantie
Menu-item nodig Ja Nee, kan in elke modulepositie worden geplaatst
Toegangsbeheer / SEF-routering Ja Nee
Beste toepassing Een beheerde feeddirectory Eén feedblok in een zijbalk of footer

Onder de motorkap gebruiken beide dezelfde FeedFactory. Bij mod_feed plak je simpelweg de URL in de module en stel je het aantal items, de beschrijving en de woordlimiet in. Er is geen categorie, geen record en geen menu-item nodig.

Vuistregel: één feed in een zijbalk gebruik je met mod_feed. Een doorzoekbare, gecategoriseerde verzameling feeds gebruik je met com_newsfeeds.

Naar boven

4. Hoe een feed wordt opgehaald en verwerkt

4.1 Live ophalen tijdens het weergeven

Deze component heeft een opvallende eigenschap. Het model laadt het News Feed-record (naam, link en parameters), maar de view haalt de daadwerkelijke externe feed op:

// components/com_newsfeeds/src/View/Newsfeed/HtmlView.php
$feed         = new FeedFactory();
$this->rssDoc = $feed->getFeed($item->link);

De externe HTTP-aanvraag gebeurt dus tijdens het renderen van de pagina, binnen de HTML-weergave. Dit gebeurt niet in het model en ook niet via een geplande taak. De meeste Joomla-componenten halen hun gegevens uitsluitend via het model op, maar News Feeds wijkt hier bewust van af.

4.2 FeedFactory en de parsers

Joomla bevat een eigen feedbibliotheek en gebruikt hiervoor niet langer SimplePie:

libraries/src/Feed/
   FeedFactory.php          kiest een parser op basis van de root-tag
   Feed.php / FeedEntry.php gegevensobjecten
   Parser/RssParser.php     verwerkt <rss>
   Parser/AtomParser.php    verwerkt <feed>

FeedFactory::getFeed() leest de XML, controleert het root-element en schakelt vervolgens de juiste parser in:

<rss>   → RssParser
<feed>  → AtomParser

Er bestaan twee veelgebruikte feedformaten. Ze dienen hetzelfde doel, maar hebben een andere structuur. RSS plaatst items binnen een kanaal:

<rss version="2.0">
  <channel>
    <title>Voorbeeldsite</title>
    <item><title>Kop</title><link>https://...</link></item>
  </channel>
</rss>

Atom, de modernere standaard, gebruikt in plaats daarvan entry-elementen:

<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Voorbeeldsite</title>
  <entry><title>Kop</title><link href="https://..."/></entry>
</feed>

In beide gevallen krijg je uiteindelijk dezelfde objecten Feed en FeedEntry terug. De parser verbergt het verschil in formaat voor de weergave.

4.3 Ophalen in twee stappen met een fallback

getFeed() probeert eerst de snelste methode en schakelt daarna over op een uitgebreidere aanpak als dat nodig is:

1. XMLReader::open($uri)          native, leest de URL direct als stream
2. Als dat mislukt:
   HttpFactory()->get($uri)       gebruikt cURL of sockets met aangepaste User-Agent
   daarna XMLReader::XML($body)

Bij de fallback wordt een browserachtige User-Agent ingesteld:

$options->set('userAgent',
  'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0');

Veel feedservers weigeren standaard PHP- of XMLReader-aanvragen. Door zich voor te doen als Firefox krijgt Joomla in zulke gevallen toch een geldige 200 OK-respons.

4.4 Sorteervolgorde

Na het verwerken van de feed past de view de ingestelde sorteervolgorde toe:

$feed_display_order = $params->get('feed_display_order', 'des');
if ($feed_display_order === 'asc') {
    $this->rssDoc->reverseItems();   // oudste eerst
}
  • des (standaard), nieuwste items eerst, zoals de bron ze aanlevert.
  • asc, oudste items eerst, handig voor chronologische of opeenvolgende feeds.

4.5 Wanneer een feed niet kan worden opgehaald

Als getFeed() een fout genereert, bijvoorbeeld door een ongeldige URL, een niet-succesvolle HTTP-respons of foutieve XML, wordt dit netjes afgehandeld:

COM_NEWSFEEDS_ERRORS_FEED_NOT_RETRIEVED

Joomla toont dan een foutmelding in plaats van de feeditems. De pagina blijft gewoon werken. Veelvoorkomende oorzaken zijn:

  • de bronwebsite is offline;
  • de feed-URL is gewijzigd;
  • er is een TLS- of certificaatprobleem;
  • de externe server blokkeert het IP-adres van jouw server.
Naar boven

5. Categorieën en toegangsbeheer

5.1 News Feeds gebruiken het gedeelde categoriesysteem

Feedcategorieën zijn gewone Joomla-categorieën met extension = com_newsfeeds:

#__categories  WHERE extension = 'com_newsfeeds'

Dat betekent dat ze dezelfde geneste boomstructuur, dezelfde knop Herstellen en hetzelfde toegangsbeheersysteem gebruiken als artikelcategorieën. Wil je meer weten over de lft- en rgt-waarden van nested sets, bekijk dan mijn aparte artikel Focus op categorieën.

5.2 Waarom categorieën hier belangrijk zijn

  • Een menu-item van het type Categorieën weergeven richt zich op een categorie, die vervolgens als jouw feedoverzicht fungeert.
  • Je kunt feeds organiseren op onderwerp, partner, regio of taal.
  • Rechten erven door de boomstructuur heen: Aanmaken, Bewerken, Status bewerken en Verwijderen.

5.3 Toegang en taal

  • Het Toegangsniveau van een feed bepaalt wie deze mag bekijken.
  • De weergave controleert zowel het toegangsniveau van de feed als dat van de bijbehorende categorie voordat iets wordt getoond.
  • Met de instelling Taal kun je een feed alleen laten verschijnen op websites die dezelfde taal gebruiken.
Naar boven

6. Plugins en integraties

6.1 Twee coreplugins breiden de component uit

Het ecosysteem rond News Feeds is relatief klein. Twee core plugins breiden de component uit:

PluginTypeWat het doet
News Feeds finder Indexer voor Slim Zoeken, zodat feeds in de zoekresultaten verschijnen.
News Feeds webservices Activeert de REST API-routes.

Er is geen formulierplugin, geen creator-plugin en geen privacyplugin, omdat feeds geen persoonsgegevens van je gebruikers bevatten.

6.2 Slim Zoeken (Finder)

De finder-plugin bevindt zich in plugins/finder/newsfeeds:

protected $context   = 'Newsfeeds';
protected $extension = 'com_newsfeeds';
protected $table     = '#__newsfeeds';

Bij het opslaan indexeert deze plugin de feedrecords (naam en beschrijving). Let op: alleen jouw beschrijving van de feed wordt geïndexeerd, niet de actuele nieuwsitems uit de externe feed.

6.3 Web Services API (headless gebruik)

De component bevat standaard REST-routes die worden geactiveerd door de webservices-plugin:

api/components/com_newsfeeds/src/Controller/FeedsController.php
   protected $contentType = 'newsfeeds';

De plugin registreert zowel feeds als hun categorieën, waardoor de volgende routes beschikbaar zijn:

GET  /api/index.php/v1/newsfeeds
GET  /api/index.php/v1/newsfeeds/{id}
GET  /api/index.php/v1/newsfeeds/categories

Belangrijk om te onthouden: de API retourneert de feedrecords (de URL's en instellingen). Het daadwerkelijk ophalen en verwerken van de externe feed blijft de verantwoordelijkheid van de client.

Naar boven

7. Achter de schermen (voor ontwikkelaars)

7.1 Eén tabel

De component is klein en gebruikt slechts één eigen tabel:

#__newsfeeds   de feedabonnementen + weergave-instellingen

Daarnaast gebruikt de component records in de gedeelde tabel #__categories waar extension = com_newsfeeds.

7.2 Belangrijke kolommen in #__newsfeeds

id, name, alias            identiteit + SEF-slug
catid                      categorie-id (→ #__categories)
link                       de RSS/Atom-feed-URL (varchar 2048)
numarticles                aantal weer te geven items
cache_time                 gewenste cacheduur (seconden, standaard 3600)
rtl                        rechts-naar-links weergeven
description                beschrijving van de feed, ingevoerd in de editor
images                     JSON: image_first / image_second + alt/caption/float
params                     JSON: show_feed_image, show_item_description,
                           feed_character_count, feed_display_order, ...
metakey/metadesc/metadata  SEO + robots
published, access, language, ordering, hits, version
publish_up / publish_down  publicatieperiode

7.3 De MVC-structuur

De code is verdeeld over de drie standaard Joomla-onderdelen:

administrator/components/com_newsfeeds/   ← feeds + categorieën beheren
   src/Model/NewsfeedModel.php, NewsfeedsModel.php
   src/Table, src/Controller, tmpl/, forms/newsfeed.xml

components/com_newsfeeds/                  ← front-end weergaven
   src/Model/NewsfeedModel.php    (laadt het feedrecord)
   src/Model/CategoryModel.php    (feeds binnen een categorie)
   src/Model/CategoriesModel.php  (categorieboom)
   src/View/Newsfeed/HtmlView.php (HAALT de live feed op en verwerkt deze)
   src/Service/Router.php

api/components/com_newsfeeds/              ← REST API
   src/Controller/FeedsController.php

De opvallende scheiding is die welke eerder al werd genoemd: het model laadt het record, maar de view haalt de externe feed op.

7.4 cache_time, een overblijfsel uit het verleden

Het veld cache_time (standaard 3600) bestaat nog steeds voor iedere feed en staat ook in het formulier. Het huidige front-endproces haalt de feed echter met FeedFactory op bij elke niet-gecachete paginaweergave. Het veld cache_time wordt daarbij niet rechtstreeks gebruikt.

De echte cache-instelling zit in Joomla zelf:

System → Global Configuration → System → Cache
   + com_newsfeeds DisplayController ondersteunt caching

Zie cache_time daarom als een historisch overblijfsel uit de oude SimplePie-periode. Wil je voorkomen dat er bij iedere paginaweergave een externe HTTP-aanvraag wordt gedaan, gebruik dan de componentcache van Joomla.

7.5 SEF-URL's en de router

Feed-URL's worden opgebouwd en verwerkt door de router van de component:

components/com_newsfeeds/src/Service/Router.php
index.php?option=com_newsfeeds&view=newsfeed&id=7
   ↔   /news-feeds/wereld/bbc-world

De router bouwt SEF-links, vertaalt binnenkomende URL's terug naar een view en een ID en geeft waar mogelijk de voorkeur aan een bestaand menu-itemsegment. Daardoor blijven feedlinks doorgaans werken wanneer een categorie wordt verplaatst.

7.6 Toegang op programmaniveau

Dezelfde Categories API voor nested sets werkt ook voor News Feeds:

use Joomla\CMS\Categories\Categories;

$categories = Categories::getInstance('Newsfeeds');
$node       = $categories->get('world');   // op alias of id
$children   = $node->getChildren();

Je kunt ook zelf een feed ophalen en verwerken vanuit elke plek binnen Joomla:

use Joomla\CMS\Feed\FeedFactory;

$feed = (new FeedFactory())->getFeed('https://example.com/feed');

foreach ($feed as $entry) {
    echo $entry->title, ' - ', $entry->uri;   // FeedEntry-objecten
}

7.7 Beveiliging, verbinding maken met de buitenwereld

Een feedreader is in feite een HTTP-client aan de serverzijde. Daardoor ontstaan risico's die veel andere componenten niet hebben:

RisicoWaaromMaatregel
SSRF De server haalt een door een beheerder opgegeven URL op. Die kan verwijzen naar interne hosts zoals http://localhost of cloudmetadata-endpoints. Laat alleen vertrouwde groepen feeds aanmaken of wijzigen (ACL).
XML-aanvallen (XXE) Bij het verwerken van onbetrouwbare XML kunnen externe entiteiten worden geladen. Joomla verwerkt XML met LIBXML_NOERROR | LIBXML_ERR_NONE | LIBXML_NOWARNING via XMLReader.
Contentinjectie / XSS Titels en beschrijvingen komen van een externe partij. Uitvoer wordt ontsmet en geëscaped in de layout. Houd overrides veilig.
Beschikbaarheid Een trage of niet-beschikbare bron vertraagt het renderen van de pagina. Gebruik componentcache en vertrouw op de fallbackmelding wanneer een feed niet beschikbaar is.

Feedgegevens zijn per definitie niet te vertrouwen, omdat ze afkomstig zijn van een externe server. Beperk daarom wie feeds mag toevoegen en vertrouw nooit blind op feedinhoud binnen eigen template-overrides.

7.8 Op grotere schaal

Het model is eenvoudig, maar het werken met externe feeds verschilt sterk van het serveren van eigen gegevens:

AandachtspuntWaaromOplossing
Vertraging tijdens renderen Elke enkele feedweergave doet een live HTTP-aanvraag. Schakel componentcache in. De netwerkverbinding bepaalt vrijwel altijd de laadtijd.
Betrouwbaarheid van de bron Een trage of niet-beschikbare bron beïnvloedt jouw pagina. Gebruik agressieve caching. De fallbackmelding voorkomt fatale fouten.
Veel feeds op één pagina Meerdere feedweergaven betekenen meerdere blokkerende netwerkverzoeken. Gebruik caching of laad feeds asynchroon via modules.
Kosten van categorie- en lijstweergaven Normale filtering op catid, published, access en language. Indexen voor deze kolommen zijn standaard aanwezig.

De belangrijkste les: News Feeds zijn netwerkgebonden, niet querygebonden. De externe server vormt de bottleneck. Daarom levert caching hier veel meer winst op dan SQL-optimalisatie.

Naar boven

8. Veelgemaakte fouten en valkuilen

8.1 "De feed toont niets"

Wanneer je de melding krijgt dat de feed niet kon worden opgehaald, doorloop dan deze checklist:

  • Is de Link een geldige en bereikbare RSS- of Atom-URL? Open de URL eens rechtstreeks in je browser.
  • Geeft de bron een HTTP 200-antwoord terug aan een serververzoek en niet alleen aan jouw browser?
  • Wordt HTTPS gebruikt met een geldig certificaat dat jouw server vertrouwt?
  • Blokkeert de bron het IP-adres of de User-Agent van jouw server?
  • Is de XML daadwerkelijk een feed (met een <rss>- of <feed>-root-element) en geen HTML-foutpagina?

8.2 "De feed wordt niet bijgewerkt of toont oude items"

  • De componentcache levert waarschijnlijk een oudere versie van de pagina. Dit is de echte cache, niet cache_time.
  • Leeg de cache of verkort de cacheduur als je sneller nieuwe items wilt zien.
  • Het kan ook zijn dat de bron zelf weinig updates publiceert. Je kunt een feed niet sneller verversen dan de bron deze bijwerkt.

8.3 Verwarring over de weergave

  • De weergave Lijst toont feeds, geen nieuwskoppen. Alleen de weergave Enkele News Feed toont de daadwerkelijke items.
  • De drielaagse overerving van Tonen / Verbergen / Globaal gebruiken zorgt vaak voor verwarring. Controleer alle drie de niveaus.
  • # Artikelen beperkt het aantal items na het ophalen van de feed. Een korte feed zal dus vanzelf minder items tonen.
  • cache_time lijkt de actualiteit van de feed te bepalen, maar doet dat in de praktijk vrijwel niet. Gebruik de systeemcache van Joomla.

8.4 Vertrouwen en inhoud

  • Feedinhoud komt van derden. Een gecompromitteerde bron kan proberen ongewenste markup of scripts aan te leveren.
  • Beperk daarom wie feeds mag toevoegen of wijzigen, zodat het SSRF-risico klein blijft.
  • Ga er niet automatisch van uit dat de licentie van de bron herpublicatie toestaat. Content-syndicatie kent juridische beperkingen.

8.5 Verwacht geen SEO-winst

Een nieuwsfeed is een verzameling externe inhoud, geen content die je zelf bezit:

  • Elke nieuwskop verwijst naar buiten, naar de website van de bron en niet naar een pagina op jouw eigen site.
  • De items worden tijdens het renderen opgehaald en niet opgeslagen als lokale, indexeerbare inhoud. Alleen jouw korte feedbeschrijving staat in #__newsfeeds.
  • De weergave Enkele News Feed kan bezoekers extra actualiteit bieden, maar levert meestal weinig voordeel op voor zoekmachineposities.

Gebruik News Feeds dus om externe content te verzamelen en zichtbaar te maken, niet als SEO- of contentmarketingstrategie. Voor SEO heb je vooral eigen artikelen nodig.

Naar boven

9. Best practices

Als je maar een paar dingen uit dit artikel onthoudt, laat het dan deze zijn:

  • Maak altijd eerst een categorie aan voordat je een feed toevoegt. Elke feed moet aan een categorie gekoppeld zijn.
  • Gebruik de weergave Enkele News Feed om nieuwskoppen te tonen en de weergave Lijst voor een overzicht van feeds.
  • Voor één feed in een zijbalk is mod_feed meestal een betere keuze dan de volledige component.
  • Schakel de componentcache van Joomla in. Dat is de echte instelling voor prestaties en actualiteit, niet cache_time.
  • Laat alleen vertrouwde gebruikersgroepen feeds toevoegen of wijzigen, omdat de server elke opgegeven URL daadwerkelijk ophaalt.
  • Vertrouw feedinhoud nooit blind in template-overrides en zorg ervoor dat uitvoer altijd correct wordt geëscaped.
Naar boven

10. In het kort

FEED         Componenten → News Feeds → Feeds → Nieuw

CATEGORIE    Componenten → News Feeds → Categorieën
             (extension=com_newsfeeds)

WEERGAVE     Menu's → Nieuw → News Feeds
             → Enkele feed / Lijst / Categorieën

URL          link
             (de RSS- of Atom-URL, het belangrijkste veld)

AANTAL       numarticles
             (aantal weer te geven items)

VOLGORDE     feed_display_order
             des = nieuwste eerst
             asc = oudste eerst

RICHTING     rtl
             (rechts-naar-links-feeds)

OPHALEN      View → FeedFactory::getFeed(link)
             (live tijdens het renderen)

PARSER       <rss>  → RssParser
             <feed> → AtomParser
             (libraries/src/Feed)

FALLBACK     XMLReader::open
             → HttpFactory
             (met Firefox User-Agent)

CACHE        systeem-/componentcache
             (NIET cache_time, dat is een overblijfsel)

OVERERVING   Feed
             → Menu-item
             → Componentopties
             (Globaal gebruiken)

PLUGINS      finder/newsfeeds
             webservices/newsfeeds
             (geen velden, geen privacyplugin)

ROUTER       src/Service/Router.php
             → SEF /news-feeds/<categorie>/<alias>

OVERRIDE     templates/<template>/html/com_newsfeeds/newsfeed/default.php

BEVEILIGING  niet-vertrouwde XML + SSRF
             → alleen vertrouwde redacteuren

API          /api/index.php/v1/newsfeeds

TABELLEN     #__newsfeeds
             + #__categories
Naar boven

11. Samenvatting

Joomla News Feeds is de enige corecomponent die actief informatie van buiten je website binnenhaalt. Het is een server-side RSS- en Atom-reader die volledig geïntegreerd is met de gedeelde categorieboom van Joomla.

De component biedt:

  • Aggregatie, het tonen van elke externe RSS- of Atom-feed zonder handmatig kopiëren en plakken.
  • Structuur, met dezelfde categorieën, toegangsrechten, menu's en SEF-routering als andere Joomla-componenten.
  • Verwerking, via Joomla's eigen FeedFactory en RSS/Atom-parsers, inclusief een HTTP-fallback voor lastige servers.
  • Controle over de weergave, zoals aantal items, beschrijvingen, afkappen van tekst, sorteervolgorde en omlijstende afbeeldingen.
  • Integratie, met Slim Zoeken en een REST API.
  • Een afwijkende architectuur, waarbij netwerkverkeer belangrijker is dan databaseprestaties en caching belangrijker is dan SQL-optimalisatie.

Zodra je begrijpt dat News Feeds slechts een verwijzing naar gegevens van iemand anders opslaat, worden alle eigenaardigheden logisch: het ophalen tijdens het renderen, het nauwelijks gebruikte cache_time-veld en de extra beveiligingsaandacht die nodig is.

Gebruik News Feeds om externe content te verzamelen en zichtbaar te maken, vertrouw op de componentcache voor prestaties en houd strikt in de hand wie nieuwe feeds mag toevoegen. Dat zijn precies de factoren die bepalen of een feedpagina probleemloos werkt of juist onbetrouwbaar wordt.

Naar boven
Newsfeeds in Joomla
Peter Martin
Peter Martin

Joomla specialist en Linux admin voor snelle, veilige en schaalbare websites.