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.