Headless CMS uitgelicht: Drupal
Floris Derksen | 25 jun 2020

Wat is Drupal?
Drupal is een open source content management systeem (CMS) dat bedrijven en organisaties kunnen gebruiken om hun website mee te ontwikkelen, content te beheren en hun digitale ambities rondom marketing en dienstverlening waar te maken. Drupal 9 - de allernieuwste versie van Drupal - is gestructureerd, gebruiksvriendelijk en uitgebreid. De 'Drupal Core' vormt de basis van het CMS en kan naar wens uitgebreid worden met meer dan duizenden modules zoals fotogalerijen, webwinkel functionaliteiten et cetera.
Traditioneel vs. headless CMS
Drupal kan in de basis omschreven worden als een traditioneel CMS. Dit betekent dat het CMS de aanwezige content omzet in HTML pagina’s en deze door middel van een server aan de bezoeker serveert. Hierbij is kenmerkend dat alle acties om deze HTML pagina’s te genereren op de server plaatsvinden.
Een headless CMS vervult eigenlijk maar een deel van dit proces. Het voornaamste kenmerk is dat het alleen zorg draagt voor content management en de ontsluiting via een API. Een headless CMS houdt zich dus niet bezig met hoe de content wordt opgemaakt en er uiteindelijk uit komt te zien.
Drupal kan dus als een traditioneel CMS ingezet worden. De laatste jaren is er echter door de community hard gewerkt aan het ‘API-First Initiative’. Dit heeft er uiteindelijk voor gezorgd dat Drupal naast z’n traditionele inzet ook als headless CMS gebruikt kan worden.
Wat is een headless CMS dan precies?
Een headless CMS voorziet dus alleen in content management en de content editor ervaring. Om uiteindelijk pagina’s en de gebruikersinterface te genereren, gebruik je een losse front-end zoals bijvoorbeeld Next.js (React.js) of Nuxt.js (Vue.js). Deze aanpak geeft je de mogelijkheid om content niet alleen beschikbaar te stellen aan websites, maar ook aan wearables, apps, dashboards, game consoles of informatieschermen. Een headless CMS kun je dus zien als ‘content bron’ van waaruit informatie in verschillende vormen via verschillende kanalen beschikbaar kan worden gemaakt.
Drupal kan als headless CMS worden gebruikt, hoe werkt dat?
Om Drupal als headless CMS in te zetten dien je een API te gebruiken. Hiervoor zijn momenteel twee aanpakken beschikbaar:
Ten eerste is er de standaard door core meegeleverde JSON:API. Deze dient geactiveerd te worden in het module overzicht. Deze API voorziet in het ontsluiten en bewerken van alle geleverde core content functionaliteiten zoals content types en bijbehorende velden. Op deze manier kan de front-end alle content aanwezig in de Drupal installatie op welke manier dan ook weergeven.
De tweede aanpak is met behulp van een GraphQL API. Deze is voor Drupal beschikbaar in de vorm van een module. Je zal de module dus moeten installeren en instellen. Vervolgens heb je dan net als bij de JSON:API de beschikking over de core content functionaliteit zoals content types en bijbehorende velden.
Kies je bij Drupal headless aanpak dan voor GraphQL of voor JSON:API?
Drupal beschikt dus over twee opties die het mogelijk maken Drupal in te zetten als headless CMS: een JSON:API (aanwezig in de Drupal core) en een module voor GraphQL (beschikbaar als community module).
JSON:API in Drupal Core
De JSON:API is een op conventies en standaarden gebaseerde API implementatie voor de ontsluiting en interactie met Drupal content structuren. Voordelen hiervan zijn dat developers zonder veel extra moeite de API gemakkelijk kunnen gebruiken. Daarnaast zorgt de specifieke implementatie voor Drupal er ook voor dat niet alleen het ophalen van content maar ook het aanpassen van content eenvoudig is.
GraphQL als Drupal module
De GraphQL module voor Drupal biedt een andersoortige content API. GraphQL kan omschreven worden als een “Query Language” en API in één. Met deze taal kan content vraaggestuurd opgehaald worden. Deze vorm wint momenteel sterk aan populariteit. Dit komt voornamelijk doordat front-end developers met GraphQL zelf in staat zijn de API te definiëren en te modelleren, volgens hun eigen wensen, zonder daarvoor een backend developer nodig te hebben.
De keuze voor de JSON:API of GraphQL hangt sterk af van eigenschappen en wensen voor de front-end. Daarbij moeten worden vermeld dat verschillen in gebruik niet groot zijn en dat bepaalde voordelen vooral een rol spelen bij specifieke wensen of situaties.
Wat zijn de voordelen van Drupal als headless CMS?
Als we kijken naar de voordelen van Drupal als headless CMS dan kunnen we het beste de vergelijking maken met “Cloud based” headless CMS-en zoals Prismic.io en Contentful. Momenteel bieden dit soort CMS-en vooral content management en ontsluiting via een API.
Dit is functionaliteit waar Drupal “out of the box” ook in voorziet. Dus daarmee is Drupal vergelijkbaar in functionaliteit met de populaire “cloud based” CMS-en. Waar Drupal vooral in uitblinkt is:
- Integraties met andere systemen zoals een CRM of een Ecommerce platform
- Deze integraties of nieuwe functionaliteit vervolgens ontsluiten via de bestaande API
- En de content editor experience zo aanpassen dat deze voldoet aan wensen van CMS gebruikers.
Het meest recente project waar we, mede vanwege deze voordelen, hebben gekozen voor een headless Drupal architectuur is de VIPP Monitor voor de Nederlandse Vereniging van Ziekenhuizen (NVZ).

Wanneer kies je voor Drupal als headless CMS?
Drupal is een uitstekende optie als headless CMS wanneer:
- Je naast content management ook integraties wilt doen met andere systemen en deze wilt ontsluiten naar de front-end via een API.
- Je specifieke wensen hebt met betrekking tot de editor experience en content workflows.
- Je uitgebreide variaties nodig hebt voor het toekennen van rollen en rechten aan CMS gebruikers.
- Je simpelweg geen cloud-based oplossing wilt gebruiken vanwege de bijbehorende prijsmodellen.
- Je gebonden bent aan een “On Premise” hosting strategie, en cloud oplossingen dus niet tot de mogelijkheden behoren.
Daarnaast kunnen toekomstige ontwikkeling van Drupal ook een rol spelen bij de keuze. Deze ontwikkelingen zullen niet stilstaan en daarom is de kans groot dat in de toekomst steeds meer reeds traditioneel beschikbare functionaliteit van het Drupal CMS via een API beschikbaar worden. Dit in tegenstelling tot cloud CMS-en die zich momenteel louter richten op content management.
Waar moet je op letten bij de inzet van Drupal als headless CMS?
In tegenstelling tot “Cloud based” headless CMS-en is Drupal een CMS dat zelf gehost en beheerd dient te worden. Daarnaast dient het ook geconfigureerd te worden om als headless CMS te dienen. Het is bij de keuze voor Drupal daarom zaak dat er een goede technisch partner betrokken is bij de implementatie van het CMS en de integratie met de front-end.
Topics:

Op zoek naar een ervaren Drupal specialist?
Tibor (Digital Consultant) adviseert je graag over jouw Drupal vraagstuk