Onder de motorkap van Drupal Commerce

Wil je als developer Drupal Commerce gebruiken, het uitbreiden of aanpassen? Dat kan een uitdaging zijn. Want hoe personaliseer je het best je Drupal webshop? Of hoe integreer je het in je website? Deze post toont je hoe Drupal Commerce technisch in elkaar zit.

Winkelstandje Drupal Commerce webshop

Waarom deze kijk onder de motorkap?

Commerce is een krachtig systeem dat je alle vrijheid geeft. Daarom is er een steile leercurve wanneer je een Drupal webshop ontwikkelt. Deze blogpost kan voor veel developers de eerste stap zijn waarmee ze hun Drupal Commerce project aanpakken.

De volgende structuur geeft je een houvast in deze blog:

  • Basics van Commerce 2.X
  • Plugins voorzien door Drupal Commerce
  • Order processors en prijsaanpassingen:
  • Price resolvers
  • Event subscribers: 
  • Custom workflows en transitions

Basics van Commerce 2.x

Composer

Voordat je in Drupal Commerce begint te werken is het belangrijk dat je Composer installeert. Dat is een contribution module die ‘dependencies’ heeft met andere contributions zoals

  • Address
  • Entity API
  • Inline Entity Form
  • Entity reference revisions
  • Profile

Bovendien vereist Drupal Commerce dat je werkt met Drupal core 8.7.0 of hoger. 

PHP extensions

Je moet een vereiste php extensie downloaden (Php7.2-bcmath) voor de price module. Sommige externe betalingsproviders vereisen dat je ook Php7.2-soap installeren, maar dat is optioneel.

Module structure

De core module van Drupal Commerce is ingedeeld in submodules, waarvan elk zijn eigen functionaliteiten heeft, maar waarbij elke submodule afhankelijk is van de andere. Deze submodules zijn:

  • Cart
  • Checkput
  • Log
  • Order
  • Payment
  • Price
  • Product
  • Promotion
  • Store
  • Tax

De Commerce module is bijvoorbeeld afhankelijk van de ‘price’ en ‘store’ module. Wanneer je Drupal Commerce installeert, download je automatisch deze modules. Met uitzondering van ‘promotions’ en de ‘tax’ module.

Structure of commerce

Er bestaan veel ‘content config entities’, ‘plugins’ en ‘workflows’ die je voor een uitdaging stellen. Wanneer je die begrijpt, zijn de uitbreidingsmogelijkheden van je Drupal webshop eindeloos. Dat maakt Commerce echt ‘pluggable’.

Plugins voorzien door Commerce core

Met plugins is kan je als developer makkelijk kleine stukjes code kan toevoegen die automatisch opgepikt wordt door Commerce en waarbij je eigen functionaliteiten maakt of uitbreidt. Via plugins implementeer je verschillend gedrag via een gemeenschappelijke interface. Plugins die gelijkaardige functionaliteiten uitvoeren behoren tot dezelfde plugin type.

Je creëert een class met een specifieke namespace, je voegt een annotatie toe en breid je basis plugin class uit.

Commerce voorziet 5 à 7 plugins waarop je kan uitbreiden. Voor 80% van de websites kan je die standaard gebruiken.

Maar je kan er ook een stukje eigen code aan toevoegen zodat je nieuwe stappen creëert in de checkout flow. In de back-end duid je aan dat je de custom flow wil gebruiken. Zo breid je gemakkelijk je webshop uit.

Een goed voorbeeld is wanneer je een promotie wil toevoegen voor een bepaald product of producttype. Dan voeg je condities toe aan Commerce, in de ‘promotion’ en ‘payment gateways’. Heeft een klant bijvoorbeeld een aankoopwaarde van meer dan 100 EUR, dan zijn de verzendingskosten gratis. Deze custom conditions voeg je toe in de Commerce condition plugin.

'Order processors' en 'price adjustments'

‘Price adjustments’ en ‘order processors’ zijn twee manieren om prijzen te bepalen in Drupal Commerce.

Standaard vul je een prijs in die verschijnt op de verschillende pagina’s en in het winkelmandje. Maar soms kan een klant een specifieke eis hebben waardoor je bijvoorbeeld een VIP korting moet toevoegen van 20 %. Je voegt dan een price adjustment uit aan de prijs van je product eenmaal de klant is ingelogd of een code heeft.

Bij een order processor worden er nog extra kosten toegevoegd zoals btw nadat alles van het subtotaal berekend is.

Price resolvers

Met ‘price resolvers’ ga je de prijs van product echt aanpassen op alle productpagina’s.

Useful event subscribers

Met ‘useful event subscribers’ voeg je makkelijk extra functionaliteiten toe wanneer dat bezoekers bepaalde events doorlopen in Commerce. Wanneer een bezoeker een bestelling afrond, kan je dat als event tracken. Als klein bedrijf kan je dan een gepersonaliseerd bericht plaatsen of de bezoeker redirecten naar het winkelmandje. Ben je een groot bedrijf, dan connecteer je Drupal Commerce via een API met je ERP systeem. Zo hou je de voorraad continue op peil en heb je er een duidelijk zicht op.

'Custom workflows' en 'transitions'

De workflows zijn een combinatie van states en transitions. Het is een systeem dat Commerce heeft om de statussen van orders (draft, completed of cancelled) aan te duiden. Het definieert dus de status van een order, van waar het komt en waar het naartoe gaat. Commerce voorziet standaard workflows, maar je kan er zelf ook nog toevoegen.

Deep dive in Drupal Commerce

Een gepersonaliseerde webshop voor jouw website?