woensdag, 2 november 2022
Zie jij door de bomen het bos niet meer? Hier zijn 6 Drupal best practises.
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!