Orchard Core RSS Feed module

De afgelopen weken heb ik gewerkt aan een Newsfeed‑module: een Orchard Core‑module die RSS‑feeds ophaalt, verwerkt en toont op mijn website. In deze blogpost neem ik je mee door de belangrijkste keuzes, uitdagingen en oplossingen die ik onderweg ben tegengekomen.

Waarom een Newsfeed‑module?

Veel websites willen actueel technieuws tonen zonder zelf artikelen te schrijven. Denk aan feeds zoals:

  • NOS Tech
  • NU.nl Tech
  • Computable

Deze RSS‑feeds zijn ideaal om automatisch content te tonen. Orchard Core heeft geen ingebouwde feed‑reader, dus dit was een mooie kans om een eigen module te bouwen die:

  • RSS‑feeds ophaalt via een background task
  • items parseert naar een eigen FeedEntry model
  • afbeeldingen, auteurs en publicatiedata ondersteunt
  • meerdere feedprofielen kan beheren
  • snel genoeg is om live op een homepage te draaien

RSS als standaard

Ik merkte dat ondanks er een RSS 2.0 specificatie is er anders om gegaan wordt met het aanbieden van afbeeldingen. Volgens spec zal dit in de enclosure element staan maar ik ben tegengekomen dat dit in de media:content element staat. De parser zal hier rekening mee houden. Tenzij er andere varianten zijn.

Background task

De background task zal periodiek profielen lezen en afhankelijke van de profielconfiguratie de RSS feed ophalen. Daarnaast is er een background task die items opschoond zodra ze de eindtijd gepasseerd hebben. Dit is overigens een softdelete. Ik heb nog niet uitgevonden hoe de items middels een harddelete kunnen worden verwijderd.

ContentParts en -Types

Er zijn een drietal ContentTypes ontwikkeld:

  • Feed Overview Page
  • Feed Profile
  • Feed Item

Een manier om de verschillende items weer te geven is om gebruik te maken van de Feed Overview Page. Dit is als menu-item in te stellen.

Een voorbeeld van contentitem Feed Overview Page:

Een voorbeeld van contentitem Feed Profile:

Feed Items worden automatisch aangemaakt door de background task. Het resultaat is nieuwsfeed.

Wat ik nog wil toevoegen

De module werkt, maar er staan nog uitbreidingen op de roadmap:

  • ondersteuning voor Atom‑feeds
  • feedprofielen per tenant
  • extra configuratie mogelijkheden instellen
  • verfraaiing van de frontend pagina

De bedoeling is om de module ofwel contentpart publiekelijk beschikbaar te stellen.