Block title
Block content
Ze webmaster
Par Ze webmaster,
Wed 17 October 2018

Drupal, le seigneur des hooks

Un hook pour tous les contrôler

Principe


Drupal 7 est un CMS dont le paradygme est la modularité, des fonctionnalités comme des thèmes d'une application. Il peut être utiliser tel quel, dans sa configuration minimale, pour rédiger des pages ou des articles.
Mais vous pouvez également le tailler à votre mesure. Plus qu'un simple CMS, Drupal peut véritablement s'utiliser comme un framework php. Son architecture, la richesse de son API vous permet de construire des applications sur mesure qui vont bien au delà d'une simple plateforme web.. Et là les possibilités sont infinies.

Pour parvenir à vos fins, deux possibilités - complémentaires :

Ajouter des modules contributeurs à votre configuration Drupal.
Il existe environ 15000 modules - maintenus ou non - disponibles pour Drupal 7 qui vous permettront d'étendre votre configuration.
https://www.drupal.org/project/project_module

Créer votre propre module
Vous pourrez ainsi prendre le contrôle total de votre application grâce aux nombreuses possibilités d'intervenir dans le workflow de Drupal ... notamment grâce aux hooks !

Nous y voilà !
 

Concept et implémentation


Un hook est une fonction php, qui vous permet d'intervenir dans le workflow de Drupal et d'y apporter des modifications sur les données en cours.
Un hook est défini pour un module donné, pour une fonction précise.

Ex. Pour le module monmodule

hook_menu function monmodule_menu()
hook_mail function monmodule_mail()
hook_theme function monmodule_theme()

 

Il est nécessaire de s'approprier l'API - et traîner un peu sur Internet aussi... - pour connaître et comprendre le fonctionnement d'un hook et la bonne manière de l'implémenter.

Vous trouverez ici la liste de tous les hooks que vous pouvez invoquer.
https://api.drupal.org/api/drupal/includes%21module.inc/group/hooks/7.x

 

Les hooks les plus utilisés


1 // Pour intervenir sur les données d'un node

hook_node_load Si vous souhaitez modifier les données du node au moment du chargement.
hook_node_presave Si vous souhaitez modifier les données du node avant leur sauvegarde en base.
hook_node_update Si vous souhaitez modifier les données du node avant leur mise à jour.
hook_node_insert Si vous souhaitez modifier les données du node lors de leur création en base de données.
hook_node_delete Si vous souhaitez intervenir avant que le node soit supprimé.

 

2 // Pour modifier les formulaires

hook_form_alter Si vous souhaitez altérer tous les formulaires, sans distinction.
Vous pouvez également filter par le $form_id.
hook_form_FORM_ID_alter Si vous souhaitez le formulaire, identifié par FORM_ID.

 

3 // Pour créer vos blocks

hook_block_info Pour déclarer un nouveau bloc.
hook_block_view Si vous souhaitez modifier les données de votre bloc.

 

4 // Pour gérer des urls

hook_menu Pour définir des urls et les fonctions / services qui lui sont associés.
hook_menu_alter Pour modifier les informations d'une url existante.

 

5 // Pour intervenir au niveau du thème

hook_theme Pour définir un thème particuliers appelé par la fonction theme()

 

 

Pour en savoir plus


Liste des hooks disponibles
https://api.drupal.org/api/drupal/includes%21module.inc/group/hooks/7.x

Implémenter un hook menu
http://zewebmaster.fr/blog/hook-menu-drupal-7

Commentaires


Ajouter un commentaire

edit Ajouter un commentaire