Een module maken in Drupal – snelle start
Laten we beginnen met api.drupal.org. Open de pagina van de hook hook_node_presave(), die wordt uitgevoerd voordat een node wordt opgeslagen.
http://api.drupal.org/api/drupal/modules!node!node.api.php/function/hook_node_validate/7
Hooks stellen ons in staat om onze eigen code in het normale verloop van Drupal te integreren — we kunnen controles toevoegen, gegevensvelden, formulierelementen enzovoort.
Voeg onze module toe in de map sites/all/modules:
sites/all/modules/custom/ sites/all/modules/custom/custom.info sites/all/modules/custom/custom.module
Schrijf in het bestand custom.info het volgende:
name = Custom description = Custom core = 7.x
In het bestand custom.module voegen we een controle toe om te verifiëren dat het body-veld niet leeg is. Als het veld leeg is, tonen we een foutmelding (hoewel we dit ook in de Drupal-beheerdersinterface verplicht hadden kunnen maken, maar goed...):
custom.module
<?php function custom_node_validate($node){ if(empty($node->body['und'][0]['value'])){ form_set_error('node-body', 'Body is empty'); // Toon foutmelding en voorkom dat de node wordt opgeslagen } }
In ons geval, wanneer de site slechts één taal heeft — namelijk und (undefined, niet-gespecificeerd) — controleren we het eerste textarea-veld van body (want het is mogelijk om meerdere tekstvelden toe te voegen voor een enkel veld).
Gebruik de module Devel en de functie dsm() om op het scherm de inhoud van een gewenst object of array weer te geven:
<?php function custom_node_view($node){ dsm($node); }