Combineer maatwerk en CMS met Wagtail

Hans kenis

Geschreven door Hans Kenis op 28-7-2020
5 minuten leestijd

Voor onze nieuwe “Werken bij Kabisa” site hebben we gebruikt gemaakt van Wagtail. Wagtail is een Content Management Systeem (CMS) gebouwd in Python, boven op het Django web framework. Hieronder lees je waarom we voor Wagtail hebben gekozen en de mogelijkheden om dit zelf toe te passen.

CMS?

Een CMS-systeem zorgt ervoor dat iemand zonder technische kennis gemakkelijk een website kan beheren. Om aanpassingen te maken, wordt er dan gebruik gemaakt van een WYSIWYG-editor (What You See Is What You Get). Hierin kan de gebruiker de inhoud bepalen, alsook de tekst opmaken, titels vastleggen of plaatjes toevoegen. Er bestaan zeer veel CMS-systemen, die elk hun eigen sterktes en zwaktes hebben. Een aantal bekende zijn: Drupal, Wordpress, Umbraco en Joomla!.

Meestal heeft de schrijver in de editor veel vrijheid om de opmaak en layout van de pagina te bepalen. Hij kan kleuren kiezen, marges bepalen, grootte van lettertype aanpassen, etc. Het is juist deze vrijheid die net een valkuil kan zijn.

Voorbeeld: Kabisa Werken-bij site

Neem bijvoorbeeld de Kabisa “Werken bij” site. Hierop komen vacatures te staan. Stel je voor dat je voor elke vacature een pagina maakt met vrije tekst en plaatjes. Deze paginas hebben wel altijd dezelfde structuur en zien er min of meer hetzelfde uit. Elke pagina heeft een jobomschrijving, een opsomming van de voordelen van het werken bij ons bedrijf en een lijstje van de kenmerken van de ideale kandidaat. Als je later aanpassingen wil doen aan de layout zal dat voor elke pagina apart moeten gebeuren. Wil je bijvoorbeeld filteren op locatie, dan zal dat moeilijk zijn. Of misschien wil je de locatie in Google Maps laten zien? Een ander voorbeeld is een website waarop je events wilt laten zien. Deze wil je later misschien in een kalender tonen.

Screenshot vacature website Kabisa

Het probleem is dat de tekst geen “betekenis” heeft binnen het systeem. Locaties, tijdstippen en titels zijn gewoon tekst, waar de software verder niets mee kan doen.

Wagtail to the Rescue

Dit is een probleem dat Wagtail probeert op te lossen. Het CMS maakt het mogelijk om verschillende concepten aan het systeem toe te voegen en deze dan als “blokken” aan te bieden in de editor. Een developer kan zo bijvoorbeeld het concept van een kantoor toevoegen. Dit kan verschillende eigenschappen hebben, zoals het adres, een naam en een foto. Een schrijver kan dan een kantoor in het systeem aanmaken en deze als geheel op een pagina toevoegen. De developer bepaald dan hoe dat kantoor er op de pagina uit zal zien. Hij kan dan kiezen om alleen de foto te laten zien, of ook een overzicht van de locatie in Google Maps toe te voegen.

Wagtail zorgt ervoor dat de verantwoordelijkheden van contentbeheerders en developers goed gescheiden blijven. De developer is verantwoordelijk voor structuur en layout en de editor hoeft zich op deze manier niet druk te maken over kleuren of marges, maar kan zich concentreren op de inhoud.

Wagtail CMS overview

Verder zit er in Wagtail ook de standaard functionaliteit die je van een CMS systeem mag verwachten. Men kan verschillende rollen en rechten aan gebruikers toekennen, het is mogelijk om paginas eerst als “draft” te schrijven waarna deze vervolgens, bij goedkeuring, gepubliceerd kunnen worden.

Een aantal andere key features van Wagtail zijn:

Uitbreidbaarheid

Wagtail is gebouwd bovenop Django, een toonaangevend web framework geschreven in Python. Hierdoor krijg je bovenop het CMS systeem alle flexibiliteit die mogelijk is met Django. Dit zorgt ervoor dat je het beste krijgt van 2 werelden. Wagtail zorgt ervoor dat je snel websites kan publiceren. Django en Python zorgen ervoor dat deze makkelijk uit te breiden zijn met andere functionaliteit.

Minder vrijheid

Natuurlijk heeft elke oplossing ook nadelen. Door het scheiden van verantwoordelijkheden heeft de editor in Wagtail minder mogelijkheden out of the box, bijvoorbeeld een afbeelding op elke gewenste positie neer te kunnen zetten. (Dit kan aangepast worden, maar gaat in tegen de filosofie van Wagtail). Hierdoor is het voor de editor niet altijd mogelijk om zelf helemaal vrij te zijn in de layout en look-and-feel van de pagina.Er dus minder ruimte voor creativiteit van de schrijver. Dit betekent dat voor sommige changes, die in andere CMS systemen door de editor gedaan kunnen worden, er bij Wagtail een code change nodig is. Hiervoor in de plaats krijg je dus wel consistentie en onderhoudbaarheid.

Wagtail Pagebuilder

Plugins

Bij de grotere CMS systemen kan je als editor wel duizenden plugins en thema’s downloaden die de standaard functionaliteit uitbreiden. Deze kant-en-klare plugins stellen je in staat om snel functionaliteit toe te voegen, maar is ook een risico voor security en upgradeability in de toekomst. Soms kunnen de plugins met hun standaard-functionaliteit net niet voldoen aan jouw specifieke eisen. Wagtail heeft dan wel geen plugin systeem voor editors, maar door het gebruik van Django hoeven developers niet alles van scratch te bouwen. Wanneer je dus voldoende hebt aan een standaard CMS met wellicht enkele plugins, is Wagtail waarschijnlijk niet de beste kandidaat voor jouw use-case.

Conclusie

Wagtail is een CMS systeem met een focus op flexibiliteit en user experience. Omdat het onderliggend een Django web-applicatie is, heb je ook alles wat Django aanbiedt tot je beschikking. Dit betekent dat Wagtail de voordelen van Django erft wat betreft security en performance.

Heb je een applicatie nodig waar je CMS-functionaliteit kan gebruiken, maar heeft deze applicatie ook behoefte heeft aan customization? Wagtail kan zeker zorgen voor een versnelling in het ontwikkelproces!

Advies op maat

Uiteraard is elke situatie uniek en voorzien we je graag van een advies op maat. Voor al je aanvullende vragen kun je terecht op onze contactpagina.

Bij Kabisa staat privacy hoog in het vaandel. Wij vinden het belangrijk dat er zorgvuldig wordt omgegaan met de data die onze bezoekers achterlaten. Zo zult u op onze website geen tracking-cookies vinden van third-parties zoals Facebook, Hotjar of Hubspot. Er worden alleen cookies geplaatst van Google en Vimeo. Deze worden gebruikt voor analyses, om zo de gebruikerservaring van onze websitebezoekers te kunnen verbeteren. Tevens zorgen deze cookies ervoor dat er relevante advertenties worden getoond. Lees meer over het gebruik van cookies in ons privacy statement.