otto

woensdag, 2 november 2022


Zie jij door de bomen het bos niet meer? Hier zijn 6 Drupal best practises.

Als jij veel tijd besteedt aan het bouwen van websites en applicaties in Drupal, is het handig om bekend te zijn met enkele ‘best practises’, om zo efficiënt mogelijk te werk te kunnen gaan.
drupal developer
Zie jij door de bomen het bos niet meer? Hier zijn 6 Drupal best practises die het CMS een stuk overzichtelijker maken

Van het beheer van modules en gebruikersgegevens tot het genereren van code - al deze processen kunnen worden geautomatiseerd en uitgevoerd met aan de hand van slechts enkele commando's. In dit artikel benoemen  we enkele beschikbare tools en bespreken we aan de hand van specifieke ‘use cases’ hoe jij deze in de praktijk kunt brengen.

1. Drupal Console

Drupal Console is een krachtige Command Line Interface. Het wordt gebruikt om boilerplate code te genereren en Drupal te onderhouden en te debuggen. 

Om Drupal Console aan een  project toe te voegen, hoef je  maar één commando te gebruiken. Dit commando luidt als volgt:

composer require drupal/console:~1.0 \
--prefer-dist \
--optimize-autoloader

Daarna kunnen we binnen Drupal Console verschillende commando's gebruiken. We geven hieronder enkele voorbeelden.

Module generatie:

drupal generate:module \
  --module="modulename" \
  --machine-name="modulename" \
  --module-path="/modules/custom" \
  --description="Mijn geweldige module" \
  --core="9.x" \
  --package="Custom" \
  --module-file \
  --composer \
  --test \
  --twigtemplate

Het genereren van een entity:

drupal generate:entity:content \
  --module="modulename" \
  --entity-class="DefaultEntity" \
  --entity-name="default_entity" \
  --base-path="/admin/structure" \
  --label="Standaard entiteit" \
  --is-vertaalbaar \
  --reviseerbaar \
  --has-forms

Het genereren van een service:

drupal generate:service \
  --module="modulename" \
  --name="modulename.default" \
  --class="DefaultService" \
  --interface \
  --interface-name="InterfaceName" \
  --path-service="/modules/custom/modulename/src/".

Het aanmaken van een gebruiker:

drupal user:create gebruikersnaam wachtwoord \
  --roles='geauthenticeerd' \
  --email="username@testing.com"  \
  -status="1"

Zoals je ziet, geeft Drupal Console ons veel mogelijkheden. Een andere interessante optie die deze Command Line Interface (CLI) ons biedt, is het draaien van een lokale PHP-server om onze website te testen. Dit kan door middel van de volgende command:

$ drupal server

Dit commando start voor ons een lokale server op poort 8088

2. Examples for Developers

Het Examples for Developers project is een grote verzameling voorbeelden van hoe je eigen modules in Drupal kunt schrijven. Deze module biedt  33 verschillende modules, van eenvoudige blokken, via verschillende soorten formulieren, tot controllers met REST API ondersteuning. Je zult waarschijnlijk alle voorbeelden vinden die je nodig hebt om zelf modules te kunnen bouwen. Deze module zal je helpen om nieuwe dingen leren en sneller werken.

3. Devel

De Devel module bevat extra functies en hulppagina's voor ontwikkelaars en beheerders. Deze voorziet jou als ontwikkelaar van blokken en werkbalken voor snelle toegang en informatie. We kunnen deze gebruiken om een andere gebruiker te "simuleren". Dit is een zeer nuttige functionaliteit, vooral bij het testen van  rollen en rechten in Drupal. Devel biedt ons functies die ons helpen bij het debuggen. En de kers op de taart - we kunnen het gebruiken om testinhoud te genereren.

Met behulp van composer kun je deze module gemakkelijk installeren aan de hand van de volgende command: 
composer require --dev drupal/devel

4. Weight

Soms gebeurt het in ons project dat we modules gebruiken die dezelfde hooks gebruiken. In de standaard configuratie staat Drupal niet toe om de volgorde van module-uitvoering te kiezen. Deze volgorde kan worden aangepast door de modules een verschillend ‘gewicht’ te geven.  Dit kan op drie manieren worden gerealiseerd.

Methode 1 - het gewicht van de Drupal-module instellen tijdens de installatie ervan

In het installatiebestand van onze module kunnen we HOOK_install toevoegen en daarmee het modulegewicht instellen.

Drupal 9 biedt een ingebouwde functie om dit probleem op te lossen:

function your_module_name_install() {
  module_set_weight('[your_module_name]', [your_preferred_weight]);
}

In Drupal 7 is het iets ingewikkelder, omdat we dit veld in de database zelf moeten veranderen:

function your_module_name_install() {
db_update('system')
    ->fields(array('weight' => your_preferred_weight))
    ->condition('name', '[your_module_name]', '=')
    ->execute();
}

Methode 2 - Gewicht wijzigen in core.extension.yml

Als we configuraties gebruiken in ons project, kunnen we het gewicht van onze module wijzigen in het bestand core.extension.yml nadat we ze geëxporteerd hebben. Het gewicht wordt weergegeven als een getal achter de naam van de module. Hoe groter het gewicht, hoe eerder de methoden in de module worden uitgevoerd.

Methode 3 - Modules Weight gebruiken

De Drupal module Modules Weight voegt een gebruiksvriendelijke configuratie van modulegewichten toe. As je naar de configuratiepagina navigeert (/admin/config/system/modules-weight/configuration),

 kun je eenvoudig de gewichten van onze modules instellen.

5. Lando

Dit is een tool die de lokale ontwikkeling van onze website vergemakkelijkt. Het stelt ons in staat om letterlijk alles te runnen en is gebaseerd op Docker. We hebben nu de CLI (Command Line Interface)  tot onze beschikking, waarmee we eenvoudig onze installaties kunnen beheren. Om lokaal een Drupal-installatie op te zetten, hebben we slechts enkele commando's nodig. Allereerst maken we een Drupal-project aan met Composer. Dit doen we aan de hand van de volgende command:
composer create-project drupal/aanbevolen-project lando-demo

Dan navigeren we naar de aangemaakte directory en voeren het volgende commando uit:
lando init

Vervolgens kun je de volgende stappen doorlopen: 

  • Kies drupal9 als recept,
  • noem je webroot web,
  • en geef vervolgens je project een naam.

Na dit proces wordt een .lando.yml bestand aangemaakt. Je  zal daar een heleboel verschillende informatie vinden, zoals de naam van je project, welke diensten je bebruikt (in eerste instantie zullen dit appserver en database zijn), adressen van de applicatie, de PHP versie, of toegangsgegevens voor onze database.
Vervolgens kun je de volgende command runnen:
lando start

Nu kun je naar  het in .lando.yml opgegeven adres navigeren en de Drupal-installatie verder blijven ontwikkelen.

6. Drush

Last but not least, noemen we Drush. Dit is zonder twijfel dé tool die elke Drupal developer zou moeten kennen. Drush bestaat al sinds Drupal 4.7 en wordt nog steeds telkens up to date gehouden. Op het moment van schrijven is de laatste versie 11.1.1, uitgebracht op 12 juli 2022. Met behulp van Drush kun je  websites beheren door configuraties te importeren en exporteren, de database bij te werken of de cache op te schonen. Met nieuwere versies van deze tool kunnen we ook code genereren. Laten we enkele nuttige commando's overlopen:

Cache opschonen

  • drush cr

Configuratie importeren

  • drush cim

Configuratie exporteren

  • drush cex

Aanmaken van een eenmalige login link

  • drush uli

Module inschakelen

  • drush en module_name

Module uitschakelen en verwijderen

  • drush pmu module_naam

Database bijwerken

  • drush updb

Watchdog controleren (dblog module)

  • drush ws

Wat betreft het genereren van code hebben we veel opties om uit te kiezen. We raden aan het commando

  • drush genererate

Vervolgens kun je op zoek gaan naar de optie die jij op dat moment heet meest passend/nodig acht.

Hoe verder door te groeien als Drupal developer?

We hebben nu enkele interessante tools doorgenomen die jij kunt gaan gebruiken bij het werken met Drupal. Zoals we kunnen zien, kan het hele proces van Drupal development een stuk gemakkelijker en overzichterlijker worden, mits je de juiste tools op de goede manier weet in te zetten. Dus of jij nou zelf developer bent en je kennis op het gebied van Drupal ietwat wil bijspijkeren, of uiteindelijk zelf wil uitgroeien tot Drupal developer,  het is absoluut de moeite waar om de tijd te nemen om deze oplossingen te verkennen. Indien dat laatste voor jou opgaat, is het bovendien aan te raden een stage te doorlopen kantoor waar enkel en alleen  Drupal  specialisten rondlopen. VDMi, gelegen in Rotterdam, is zo’n kantoor. Wij bieden jou graag een stage, waarin je  je kunt ontwikkelen en bewijzen dat jij het in je hebt om te werken aan de tofste projecten. Veel van onze stagiairs blijven na hun stage immers bij ons werken en hebben bijgedragen aan het ontwikkelen van bijvoorbeeld een website voor de  tweede kamer, een sociaal  intranet voor de KNVB en een geheel nieuwe corporate website voor de Autoriteit Persoonsgegevens. De mogelijkheden zijn eindeloos!

Ben jij leergierig op het gebied van Drupal en wil jij binnen de kortste keren een steentje kunnen bijdragen aan projecten zoals de bovengenoemde? Neem dan contact met ons op! We bespreken graag de mogelijkheden met je! Je kunt altijd mailen via info@vdmi.nl of tijdens kantooruren bellen naar  010 486 0118. We kijken ernaar uit om je te spreken!