Créer un module Drupal, démarrage rapide
Commençons par api.drupal.org, ouvrez la page du hook hook_node_presave()
, qui s’exécute avant l’ajout d’un nœud.
http://api.drupal.org/api/drupal/modules!node!node.api.php/function/hook_node_validate/7
Les hooks nous permettent d’intégrer notre code dans le flux normal de Drupal, pour ajouter des validations, des champs, des éléments de formulaire, etc.
Ajoutons notre module dans le dossier sites/all/modules
:
sites/all/modules/custom/ sites/all/modules/custom/custom.info sites/all/modules/custom/custom.module
Dans le fichier custom.info
, écrivez :
name = Custom description = Custom core = 7.x
Dans le fichier custom.module
, nous faisons une vérification pour s’assurer que le champ contenu n’est pas vide. Si le champ est vide, une erreur sera affichée (même si on pourrait aussi simplement rendre le champ obligatoire dans l’administration Drupal) :
custom.module
<?php function custom_node_validate($node){ if (empty($node->body['und'][0]['value'])) { form_set_error('node-body', 'Le champ contenu est vide'); // Affiche une erreur et empêche la sauvegarde du nœud } }
Dans notre cas, quand le site utilise une seule langue, et que c’est 'und' (undefined, indéfini), on vérifie la première textarea du champ body (car on peut avoir un nombre illimité de textarea pour un champ).
Utilisez le module devel et sa fonction dsm()
pour afficher à l’écran une impression d’un objet ou d’un tableau :
<?php function custom_node_view($node){ dsm($node); }