Planète

Par fgm@drupal.org
Frédéric G. Marand

Drupal et le NoSQL

Présentation sur l'état de l'art en matière de technologies NoSQL en environnement Drupal, données le 2011-11-10 à l'occasion de la conférence Drupagora.

en lire plus

Par badgones

Form API Drupal : supprimer un éditeur WYSIWYG

Si vous voulez supprimer un éditeur Wysiwyg d'un textarea de vote formulaire, par exemple pour remplir des données dans une interface administrateur, il suffit de rajouter la ligne suivante :

<span style="color: #000000;"><strong><span style="color: #dd0000;">'#wysiwyg' </span><span style="color: #007700;">=&gt; </span><span style="color: #0000bb;">false<br /> <br /> <br /> </span></strong></span>Exemple :

<span style="color: #000000;"><span style="color: #0000bb;">$form</span><span style="color: #007700;">[</span><span style="color: #dd0000;">'textarea_field'</span><span style="color: #007700;">] = array(<br /> &nbsp;&nbsp;&nbsp; </span><span style="color: #dd0000;">'#type' </span><span style="color: #007700;">=&gt; </span><span style="color: #dd0000;">'textarea'</span><span style="color: #007700;">,</span></span>

en lire plus

Par juliendubreuil
julien dubreuil
Drupal since 2009

Comment créer et appliquer des styles d’images avec Drupal 7 via l’UI

Depuis Drupal 7 la gestion des images et des styles d’images est native, ainsi donc plus besoin d’installer le module imagecache pour retailler, pivoter ou encore redimensionner vos photos.
Une fois créée, vous pourrez appliquer vos styles sur n’importe quelle photo, qu’elle soit affichée dans le contenu d’un node ou encore dans le rendue d’une vue. La manip’ est vraiment simple et permet de décliner une photo en une quantité indéfinie de possibilité.

Voici donc un petit guide pour vous montrer comment ajouter de nouveaux styles d’images via l’interface de Drupal et comment vous en servir.

Créer un style d’image via l’interface d’administration

Première étape, rendez-vous sur la page d’administration des styles d’images Administration » Configuration » Media et cliquez sur Image styles. Cliquez sur le lien au dessus des trois styles d’images par défaut nommé Add style, et insérez un titre à votre style d’image. Petit conseil, soyez explicite sur les noms, car plus vous en aurez, plus cela deviendra difficile de vous y retrouver.


Deuxième étape
, l’ajout d’effets aux images et pour cela vous avez à votre disposition 6 choix :
- Crop : découpe l’image selon une certaine dimension.
- Desaturate : désature l’image.
- Resize : retaille l’image.
- Rotate : retourner l’image en fonction d’un angle.
- Scale : retaille l’image en gardant les proportions.
- Scale and crop : retaille et découpe l’image.

Choisissez l’effet désiré, entrez les dimensions voulus et sauvegardez.

Troisième étape, la visualisation des résultats. Une fois votre effet validé, vous vous retrouvez sur la page de votre nouveau style d’image. En haut de celle-ci se trouve deux images afin de voir le résultat de votre effet. A gauche l’image original et à droite l’image transformée.

Derniere étape, cliquez sur Update style pour valider les modifications effectuées et pour sauvegarder votre nouveau style que vous retrouvez pour mettre en forme chaque champ image

Appliquer un style d’image

Dans le cas d’un contenu, rendez-vous la page de gestion de l’affichage des champs : Administration » Structure » Content types et cliquez sur Manage display, pour le type de contenu de votre choix. Cliquez ensuite sur la petite icône en forme d’engrenage qui devrait se trouver à droite sur la ligne de votre champ image.

Sélectionnez le style de votre choix, cliquez sur le bouton update et votre style sera maintenant appliqué à ce champ. Pour visualiser les résultat rendez-vous sur la page de votre contenu et voila.

Cet article Comment créer et appliquer des styles d’images avec Drupal 7 via l’UI est apparu en premier sur Julien Dubreuil.

Par juliendubreuil
julien dubreuil
Drupal since 2009

Comment créer et appliquer des styles d’images avec Drupal 7 via l’UI

Comment créer et appliquer des styles d’images avec Drupal 7 via l’UI

Depuis Drupal 7 la gestion des images et des styles d’images est native, ainsi donc plus besoin d’installer le module imagecache pour retailler, pivoter ou encore redimensionner vos photos.
Une fois créée, vous pourrez appliquer vos styles sur n’importe quelle photo, qu’elle soit affichée dans le contenu d’un node ou encore dans le rendue d’une vue. La manip’ est vraiment simple et permet de décliner une photo en une quantité indéfinie de possibilité.

Voici donc un petit guide pour vous montrer comment ajouter de nouveaux styles d’images via l’interface de Drupal et comment vous en servir.

Créer un style d’image via l’interface d’administration

Première étape, rendez-vous sur la page d’administration des styles d’images Administration » Configuration » Media et cliquez sur Image styles. Cliquez sur le lien au dessus des trois styles d’images par défaut nommé Add style, et insérez un titre à votre style d’image. Petit conseil, soyez explicite sur les noms, car plus vous en aurez, plus cela deviendra difficile de vous y retrouver.


Deuxième étape
, l’ajout d’effets aux images et pour cela vous avez à votre disposition 6 choix :
– Crop : découpe l’image selon une certaine dimension.
– Desaturate : désature l’image.
– Resize : retaille l’image.
– Rotate : retourner l’image en fonction d’un angle.
– Scale : retaille l’image en gardant les proportions.
– Scale and crop : retaille et découpe l’image.

Choisissez l’effet désiré, entrez les dimensions voulus et sauvegardez.

Troisième étape, la visualisation des résultats. Une fois votre effet validé, vous vous retrouvez sur la page de votre nouveau style d’image. En haut de celle-ci se trouve deux images afin de voir le résultat de votre effet. A gauche l’image original et à droite l’image transformée.

Derniere étape, cliquez sur Update style pour valider les modifications effectuées et pour sauvegarder votre nouveau style que vous retrouvez pour mettre en forme chaque champ image

Appliquer un style d’image

Dans le cas d’un contenu, rendez-vous la page de gestion de l’affichage des champs : Administration » Structure » Content types et cliquez sur Manage display, pour le type de contenu de votre choix. Cliquez ensuite sur la petite icône en forme d’engrenage qui devrait se trouver à droite sur la ligne de votre champ image.

Sélectionnez le style de votre choix, cliquez sur le bouton update et votre style sera maintenant appliqué à ce champ. Pour visualiser les résultat rendez-vous sur la page de votre contenu et voila.

Par badgones

Nice menu : ouverture à droite ou à gauche en fonction de la largeur du navigateur

Vous avez besoin d'un menu nice menu qui s'ouvre à droite ou à gauche en fonction de sa position dans la page, et de la largeur du navigateur?
Voilà la solution :

Vous ajoutez votre menu, avec ouveture vers la gauche. Puis, vous rajouter le Javascript suivant dans votre thème (ou alors, vous incluez le fichier JS mis en attachement) :

Attention : #nice-menu-1 est à changer suivant le menu que vous voulez modifier !

$("#nice-menu-1 .menuparent").bind('mouseover',function(){
    if (($(this).offset().left+$(this).outerWidth()+$(this).children("ul:first").outerWidth()) > $("body").outerWidth()) {
        $(this).children("ul:first").css({left:'-'+$(this).outerWidth()+'px'});
    }
    else {

en lire plus

Par j0nathan

Joignez-vous à Koumbit pour le prochain Drupal Camp de Montréal

Fidèle à son rôle significatif au sein de la communauté Drupal, plus particulièrement dans la région de Montréal, Koumbit est fier de contribuer, pour une quatrième année consécutive, à l'organisation et à la commandite du DrupalCamp de Montréal. Le prochain camp se déroulera dans quelques jours seulement, du 16 au 18 septembre, et il sera précédé, du 14 au 16 septembre, d'un sprint de code de trois jours sur le multilinguisme dans Drupal 8.

Koumbit agit par conviction.

Koumbit croit que le logiciel libre est un outil d'affranchissement personnel et collectif. Le libre nous permet d'offrir des solutions éthiques et précieuses pour nos clients en créant des opportunités économiques durables pour la création de services et d'emplois. D'une certaine manière, le logiciel libre nous permet de développer et de nous approprier les «moyens de production de l'ère de l'information».

Koumbit croit en Drupal. Dès le début, nous avons reconnu son potentiel et nous lui avons fait une place de choix au coeur de nos activités. Après sept ans, ce choix nous apparait toujours pertinent.

Koumbit croit à l'intiative communautaire. Ce que accomplissons ensemble est bien plus intéressant que lorsque nous sommes isolés. Une bande de pigistes se sont réunis un jour autour de leur conviction commune que l'action collective était la voie de l'avenir. Ils ont créé quelque chose de plus grand que la somme de ses parties. Ils l'ont appelé «Koumbit». Depuis, ce collectif travaille à faire mieux qu'une compagnie qui réussit dans un marché limité. Nous, ce collectif, veillons à contribuer au progrès social.

Koumbit croit en vous. Que vous vouliez apprendre, enseigner, programmer ou inspirer, joignez-vous à nous pour ce qui promet être le meilleur Drupal Camp de Montréal jusqu'ici.

Par j0nathan

Joignez-vous à Koumbit pour le prochain Drupal Camp de Montréal

Fidèle à son rôle significatif au sein de la communauté Drupal, plus particulièrement dans la région de Montréal, Koumbit est fier de contribuer, pour une quatrième année consécutive, à l'organisation et à la commandite du DrupalCamp de Montréal. Le prochain camp se déroulera dans quelques jours seulement, du 16 au 18 septembre, et il sera précédé, du 14 au 16 septembre, d'un sprint de code de trois jours sur le multilinguisme dans Drupal 8.

Koumbit agit par conviction.

Koumbit croit que le logiciel libre est un outil d'affranchissement personnel et collectif. Le libre nous permet d'offrir des solutions éthiques et précieuses pour nos clients en créant des opportunités économiques durables pour la création de services et d'emplois. D'une certaine manière, le logiciel libre nous permet de développer et de nous approprier les «moyens de production de l'ère de l'information».

Koumbit croit en Drupal. Dès le début, nous avons reconnu son potentiel et nous lui avons fait une place de choix au coeur de nos activités. Après sept ans, ce choix nous apparait toujours pertinent.

Koumbit croit à l'intiative communautaire. Ce que accomplissons ensemble est bien plus intéressant que lorsque nous sommes isolés. Une bande de pigistes se sont réunis un jour autour de leur conviction commune que l'action collective était la voie de l'avenir. Ils ont créé quelque chose de plus grand que la somme de ses parties. Ils l'ont appelé «Koumbit». Depuis, ce collectif travaille à faire mieux qu'une compagnie qui réussit dans un marché limité. Nous, ce collectif, veillons à contribuer au progrès social.

Koumbit croit en vous. Que vous vouliez apprendre, enseigner, programmer ou inspirer, joignez-vous à nous pour ce qui promet être le meilleur Drupal Camp de Montréal jusqu'ici.

Par juliendubreuil
julien dubreuil
Drupal since 2009

Les hooks : connaître Drupal pour créer vos modules

Ce qu’il y a de bien avec Drupal c’est que l’on a l’impression de jouer aux lego, un module par ci, un module par là et le tout, imbriqué depuis l’interface d’administration de celui-ci. Mais comme moi, un jour vous avez voulu créer vous même vos structures et non plus seulement réaliser ce qu’il était possible de faire avec une simple boite de lego. Bref, vous avez déjà eu besoin de développer votre propre module afin de tordre le système et le faire coller à votre cahier des charges.

Cette nécessité de faire son propre module arrive bien plus vite qu’on ne le croit et c’est pour ça que je me suis dit qu’une petite liste des principales choses à connaître pour jouer avec Drupal serait utile. Du coup, j’ai essayé de me replacer quelques mois en arrière, à mes débuts avec Drupal et son api et je vous ai listé les principaux hooks que vous pourrez être amenés à utiliser au départ.

Concept et implémentation d’un hook

Avant d’aller plus loin, il y a une notion à comprendre pour développer un module avec Drupal et j’espère pour vous que vous avez déjà entendu ce mot : ‘hook’, sinon il va falloir réviser les bases de Drupal :p
Pour vous donner une bonne définition de ce qu’est un hook, rien de mieux que la documentation officielle.

Bon grossièrement, le système de hooks permet d’interagir avec le corps de Drupal et les modules installés, c’est tellement surpuissant que le module Chuck Norris utilise le concept de hook.

Un hook c’est quoi ? Un hook ce n’est ni plus ni moins qu’une fonction PHP nommée foo_bar(), ou “foo” désigne le nom de votre module (le nom du module serait donc foo.module) et “bar” le nom d’un hook spécifique. Chaque hook possède un nombre défini de paramètres et un résultat spécifique. Bref rien de compliqué si vous avez déjà programmé.

Oui mais concrètement comment ça marche ? Prenez l’exemple de la mise à jour d’un contenu. Vous faites des modifications et vous sauvegardez, Drupal va alors déclencher son processus de sauvegarde et afin que les modules puissent intervenir sur les données en cours, il va déterminer quel modules ont implémenté ce hook afin de leur donner la main.
Ce qu’il faut comprendre c’est que lorsqu’un hook est déclenché, Drupal parcourt tous les modules afin de connaître les modules voulant prendre la parole.

Si toutefois ce n’est toujours pas clair, voici la définition de wikipédia, mais je suis sûr qu’elle vous sera inutile :)

Les hooks à connaitre :

Vous l’aurez compris, pour maîtriser Drupal et en faire ce que vous voulez, il va vous falloir connaître les différents hooks à votre disposition. J’ai essayé ici de vous créer une petite liste de hooks qui vont vous permettre de débuter facilement, mais dîtes vous bien qu’il en existe beaucoup plus, je vous laisse le plaisir de les découvrir par vous même.

Note : Il y a eu plein d’évolutions entre D6 et D7 et l’une d’entre elle a consisté à diviser les hooks intervenant lors d’actions spécifiques. Par exemple le hook_nodeapi (que l’on verra par la suite) avait en D6 un deuxième paramètre nommé $op qui pouvait prendre différentes valeurs comme : load, insert, delete, view… Ainsi lorsque vous vouliez intervenir lors du chargement ou de la suppression d’un node, vous n’aviez qu’à implémenter ce hook et vérifier la valeur de la variable $op. Maintenant le hook_nodeapi n’existe plus, il a été remplacé par autant de hooks qu’il y avait d’actions. Grâce à cela, on a gagné en lisibilité du code mais on a augmenté le nombre de hooks disponibles. Ainsi plusieurs hooks que vous connaissiez en D6 ont été revus.

Gestion des blocs

Si vous utilisez Drupal, vous avez sûrement déjà dû créer un bloc depuis le back office. Comme souvent lorsqu’il est possible de faire quelque chose depuis l’interface d’administration, il est possible de le faire en code. Ainsi grâce à quelques hooks, il est facile de créer, gérer et de configurer les blocs.

hook_block_info : N’importe quel module peut ajouter des blocs, mais encore faut-il que drupal le sache, grâce à ce hook vous allez pouvoir déclarer l’ajout d’un ou de plusieurs blocs.

hook_block_view : Une fois que vous avez déclaré votre bloc il vous faut créer son contenu avec la fonction hook_block_view.

hook_block_configure : Pour chaque bloc vous pouvez ajouter un formulaire de configuration plus complet que celui fourni par défaut et pour cela il vous faut utiliser ce hook.

hook_block_save : Si vous avez mis en place le hook ci-dessus vous devez aussi utiliser le hook_bloc_save afin de sauvegarder les informations renseignées dans votre formulaire.

Liste des hooks liés aux blocs

Prenez vos contenus en main

Drupal étant un outil de gestion de contenus, vous vous doutez bien que c’est sur cette partie que l’on peut faire le plus de modifications :) Avec cette petite liste de hooks, vous trouverez forcément le bon moment pour interagir avec vos contenus.

hook_node_load – ce hook est exécuté lorsqu’un node est chargé depuis la base de données, c’est donc l’étape idéale si vous avez des données à modifier lors du chargement.

hook_node_view – à chaque fois que vous affichez un node sur votre site c’est le hook_view qui est invoqué. En gros c’est le hook que vous allez utiliser pour modifier le rendu à vos visiteurs.

hook_node_presave – c’est un hook utile puisqu’il permet d’intervenir sur les données juste avant la sauvegarde en base. Ce hook est appelé lors de l’insertion comme lors de la mise à jour.

hook_node_insert – le hook_node_insert est invoqué lors de la création du contenu en base et uniquement lors de la création

hook_node_update – à l’inverse celui-ci n’est invoqué que lors de la mise à jour du contenu.

hook_node_prepare – pour créer un nouveau contenu sur votre site vous devez utiliser le formulaire de création de contenus et justement le hook_node_prepare vous permet d’avoir la main sur celui-ci avant qu’il ne soit affiché à vos utilisateurs. Parfait si vous voulez remplir ou présélectionner des valeurs.

hook_node_delete : avec un nom si explicite, vous l’aurez compris qu’il s’agit du hook qui permet d’intervenir lorsqu’un contenu est supprimé.

Liste des hooks liés aux nodes

hook_permission : Dans la partie contenu on peut aussi y ajouter le hook_permission (connu sous le nom de hook_perm en D6) qui permet de créer de nouveaux droits d’accès que vous pourrez utiliser dans vos modules afin de restreindre ou non l’accès à vos fonctionnalités.

Les formulaires

hook_form_alter et hook_form_FORM_ID_alter : deux hooks qui ont leur importance puisque grâce à eux vous allez pouvoir modifier n’importe quel formulaire sur le site afin d’y ajouter des champs, ajouter des fonctions de validation ou encore altérer les données saisies.
Le hook_form_alter est appelé pour n’importe quel formulaire sur votre site, c’est à vous de savoir si vous êtes sur le formulaire souhaité. Si vous voulez modifier un formulaire en particulier, utilisez plutôt le deuxième hook qui ne sera invoqué que pour le FORM_ID précisé. Vous pouvez par exemple utiliser le hook_form_alter pour connaître la valeur de $form_id puis utiliser le hook_form_FORM_ID_alter.

L’administration de vos modules

Il y a trois hooks à connaître pour l’administration des modules, le hook_install et hook_uninstall qui vont de paire et le hook_update.

hook_install : ce hook est le premier invoqué lors de l’activation d’un module, c’est pendant cette étape que l’on doit par exemple installer les tables SQL nécessaires au module ainsi que la configuration par défaut de celui-ci.

hook_uninstall : C’est l’inverse du hook_install, celui-ci sert à supprimer tout ce qui touche au module, données en bases, schémas, variables… Notez que ce hook n’est pas exécuté à la désactivation du module mais lors de sa désinstallation.

hook_update_N : Le code d’un module n’est jamais figé et est souvent amené à évoluer. Grâce au hook_update_N vous allez pouvoir intervenir sur votre module afin de mettre à jour sa configuration, les données contenues dans ses tables ou même celles d’un autre module, (au passage, n’oubliez pas de mettre à jour le schéma de la base de données). N désigne le numéro de version à mettre et est découpé en 3 parties. Le premier chiffre correspond à la version de Drupal utilisé, le deuxième à la version de votre module et les deux derniers afin d’identifier les différentes mises à jour. Par exemple, la deuxième update d’un module en version 2.1 sur un Drupal 7 aura pour valeur : hook_update_7202
Pour installer vos mises à jour, il suffit de vous rendre sur la page /update.php ou alors d’utiliser les commandes Drush faites pour ça.

Gestion des urls de votre site

hook_menu : l’un des hooks les plus utilisés, mais bien que son nom évoque la gestion des menus, celui-ci permet en fait de créer de nouvelles urls sur votre site afin de mettre en place de nouvelles pages, de nouveaux formulaires ou n’importe quel service ayant besoin d’une adresse. C’est lors de la mise en place de ce hook que l’on peut utiliser le hook_permission afin de restreindre l’accès à une page en fonction d’un rôle.

hook_menu_alter : permet de modifier les propriétés de n’importe quelle url définie dans un hook_menu. Par exemple vous pouvez modifier, le titre d’une page, les droits d’accès, voir même surcharger la page callback.

Drupal et les hooks systems

hook_cron : ce hook vous permet d’exécuter des actions périodiques depuis votre Drupal, comme par exemple l’envoi de mail, la mise à jour de fichiers ou encore la génération de backup. Personnellement je préfère utiliser la cron du serveur plutôt que celle de Drupal, mais pour cela il faut avoir accès aux serveurs ce qui n’est pas possible sur un mutualisé.

hook_mail : c’est le hook à implémenter si vous voulez envoyer des emails via Drupal. Celui-ci permet aux modules de préparer des messages qui seront envoyés par la suite avec la fonction drupal_mail.

hook_mail_alter : permet de modifier les messages envoyés par les autres modules

Thème

hook_theme : recense toutes les fonctions de thème disponible sur votre site, ainsi lorsqu’un module doit implémenter une nouvelle fonction, il suffit de la déclarer au moyen de ce hook. Une fois connue par Drupal, celle-ci devient disponible à tout moment et peut être utilisée grâce à la fonction theme().


J’espère que cette liste et ces quelques explications sur le système de hook vous permettront de mieux comprendre et utiliser Drupal, il existe beaucoup plus de hook que ce qu’il y a dans cet article mais pour les découvrir il vous faudra explorer Drupal par vous même. En attendant vous trouverez ici la liste de tous les hooks que vous pourrez rencontrer avec Drupal 7

Cet article Les hooks : connaître Drupal pour créer vos modules est apparu en premier sur Julien Dubreuil.

Par juliendubreuil
julien dubreuil
Drupal since 2009

Les hooks : connaître Drupal pour créer vos modules

Les hooks : connaître Drupal pour créer vos modules

Ce qu’il y a de bien avec Drupal c’est que l’on a l’impression de jouer aux lego, un module par ci, un module par là et le tout, imbriqué depuis l’interface d’administration de celui-ci. Mais comme moi, un jour vous avez voulu créer vous même vos structures et non plus seulement réaliser ce qu’il était possible de faire avec une simple boite de lego. Bref, vous avez déjà eu besoin de développer votre propre module afin de tordre le système et le faire coller à votre cahier des charges.

Cette nécessité de faire son propre module arrive bien plus vite qu’on ne le croit et c’est pour ça que je me suis dit qu’une petite liste des principales choses à connaître pour jouer avec Drupal serait utile. Du coup, j’ai essayé de me replacer quelques mois en arrière, à mes débuts avec Drupal et son api et je vous ai listé les principaux hooks que vous pourrez être amenés à utiliser au départ.

Concept et implémentation d’un hook

Avant d’aller plus loin, il y a une notion à comprendre pour développer un module avec Drupal et j’espère pour vous que vous avez déjà entendu ce mot : ‘hook’, sinon il va falloir réviser les bases de Drupal :p
Pour vous donner une bonne définition de ce qu’est un hook, rien de mieux que la documentation officielle.

Bon grossièrement, le système de hooks permet d’interagir avec le corps de Drupal et les modules installés, c’est tellement surpuissant que le module Chuck Norris utilise le concept de hook.

Un hook c’est quoi ? Un hook ce n’est ni plus ni moins qu’une fonction PHP nommée foo_bar(), ou “foo” désigne le nom de votre module (le nom du module serait donc foo.module) et “bar” le nom d’un hook spécifique. Chaque hook possède un nombre défini de paramètres et un résultat spécifique. Bref rien de compliqué si vous avez déjà programmé.

Oui mais concrètement comment ça marche ? Prenez l’exemple de la mise à jour d’un contenu. Vous faites des modifications et vous sauvegardez, Drupal va alors déclencher son processus de sauvegarde et afin que les modules puissent intervenir sur les données en cours, il va déterminer quel modules ont implémenté ce hook afin de leur donner la main.
Ce qu’il faut comprendre c’est que lorsqu’un hook est déclenché, Drupal parcourt tous les modules afin de connaître les modules voulant prendre la parole.

Si toutefois ce n’est toujours pas clair, voici la définition de wikipédia, mais je suis sûr qu’elle vous sera inutile :)

Les hooks à connaitre :

Vous l’aurez compris, pour maîtriser Drupal et en faire ce que vous voulez, il va vous falloir connaître les différents hooks à votre disposition. J’ai essayé ici de vous créer une petite liste de hooks qui vont vous permettre de débuter facilement, mais dîtes vous bien qu’il en existe beaucoup plus, je vous laisse le plaisir de les découvrir par vous même.

Note : Il y a eu plein d’évolutions entre D6 et D7 et l’une d’entre elle a consisté à diviser les hooks intervenant lors d’actions spécifiques. Par exemple le hook_nodeapi (que l’on verra par la suite) avait en D6 un deuxième paramètre nommé $op qui pouvait prendre différentes valeurs comme : load, insert, delete, view… Ainsi lorsque vous vouliez intervenir lors du chargement ou de la suppression d’un node, vous n’aviez qu’à implémenter ce hook et vérifier la valeur de la variable $op. Maintenant le hook_nodeapi n’existe plus, il a été remplacé par autant de hooks qu’il y avait d’actions. Grâce à cela, on a gagné en lisibilité du code mais on a augmenté le nombre de hooks disponibles. Ainsi plusieurs hooks que vous connaissiez en D6 ont été revus.

Gestion des blocs

Si vous utilisez Drupal, vous avez sûrement déjà dû créer un bloc depuis le back office. Comme souvent lorsqu’il est possible de faire quelque chose depuis l’interface d’administration, il est possible de le faire en code. Ainsi grâce à quelques hooks, il est facile de créer, gérer et de configurer les blocs.

hook_block_info : N’importe quel module peut ajouter des blocs, mais encore faut-il que drupal le sache, grâce à ce hook vous allez pouvoir déclarer l’ajout d’un ou de plusieurs blocs.

hook_block_view : Une fois que vous avez déclaré votre bloc il vous faut créer son contenu avec la fonction hook_block_view.

hook_block_configure : Pour chaque bloc vous pouvez ajouter un formulaire de configuration plus complet que celui fourni par défaut et pour cela il vous faut utiliser ce hook.

hook_block_save : Si vous avez mis en place le hook ci-dessus vous devez aussi utiliser le hook_bloc_save afin de sauvegarder les informations renseignées dans votre formulaire.

Liste des hooks liés aux blocs

Prenez vos contenus en main

Drupal étant un outil de gestion de contenus, vous vous doutez bien que c’est sur cette partie que l’on peut faire le plus de modifications :) Avec cette petite liste de hooks, vous trouverez forcément le bon moment pour interagir avec vos contenus.

hook_node_load – ce hook est exécuté lorsqu’un node est chargé depuis la base de données, c’est donc l’étape idéale si vous avez des données à modifier lors du chargement.

hook_node_view – à chaque fois que vous affichez un node sur votre site c’est le hook_view qui est invoqué. En gros c’est le hook que vous allez utiliser pour modifier le rendu à vos visiteurs.

hook_node_presave – c’est un hook utile puisqu’il permet d’intervenir sur les données juste avant la sauvegarde en base. Ce hook est appelé lors de l’insertion comme lors de la mise à jour.

hook_node_insert – le hook_node_insert est invoqué lors de la création du contenu en base et uniquement lors de la création

hook_node_update – à l’inverse celui-ci n’est invoqué que lors de la mise à jour du contenu.

hook_node_prepare – pour créer un nouveau contenu sur votre site vous devez utiliser le formulaire de création de contenus et justement le hook_node_prepare vous permet d’avoir la main sur celui-ci avant qu’il ne soit affiché à vos utilisateurs. Parfait si vous voulez remplir ou présélectionner des valeurs.

hook_node_delete : avec un nom si explicite, vous l’aurez compris qu’il s’agit du hook qui permet d’intervenir lorsqu’un contenu est supprimé.

Liste des hooks liés aux nodes

hook_permission : Dans la partie contenu on peut aussi y ajouter le hook_permission (connu sous le nom de hook_perm en D6) qui permet de créer de nouveaux droits d’accès que vous pourrez utiliser dans vos modules afin de restreindre ou non l’accès à vos fonctionnalités.

Les formulaires

hook_form_alter et hook_form_FORM_ID_alter : deux hooks qui ont leur importance puisque grâce à eux vous allez pouvoir modifier n’importe quel formulaire sur le site afin d’y ajouter des champs, ajouter des fonctions de validation ou encore altérer les données saisies.
Le hook_form_alter est appelé pour n’importe quel formulaire sur votre site, c’est à vous de savoir si vous êtes sur le formulaire souhaité. Si vous voulez modifier un formulaire en particulier, utilisez plutôt le deuxième hook qui ne sera invoqué que pour le FORM_ID précisé. Vous pouvez par exemple utiliser le hook_form_alter pour connaître la valeur de $form_id puis utiliser le hook_form_FORM_ID_alter.

L’administration de vos modules

Il y a trois hooks à connaître pour l’administration des modules, le hook_install et hook_uninstall qui vont de paire et le hook_update.

hook_install : ce hook est le premier invoqué lors de l’activation d’un module, c’est pendant cette étape que l’on doit par exemple installer les tables SQL nécessaires au module ainsi que la configuration par défaut de celui-ci.

hook_uninstall : C’est l’inverse du hook_install, celui-ci sert à supprimer tout ce qui touche au module, données en bases, schémas, variables… Notez que ce hook n’est pas exécuté à la désactivation du module mais lors de sa désinstallation.

hook_update_N : Le code d’un module n’est jamais figé et est souvent amené à évoluer. Grâce au hook_update_N vous allez pouvoir intervenir sur votre module afin de mettre à jour sa configuration, les données contenues dans ses tables ou même celles d’un autre module, (au passage, n’oubliez pas de mettre à jour le schéma de la base de données). N désigne le numéro de version à mettre et est découpé en 3 parties. Le premier chiffre correspond à la version de Drupal utilisé, le deuxième à la version de votre module et les deux derniers afin d’identifier les différentes mises à jour. Par exemple, la deuxième update d’un module en version 2.1 sur un Drupal 7 aura pour valeur : hook_update_7202
Pour installer vos mises à jour, il suffit de vous rendre sur la page /update.php ou alors d’utiliser les commandes Drush faites pour ça.

Gestion des urls de votre site

hook_menu : l’un des hooks les plus utilisés, mais bien que son nom évoque la gestion des menus, celui-ci permet en fait de créer de nouvelles urls sur votre site afin de mettre en place de nouvelles pages, de nouveaux formulaires ou n’importe quel service ayant besoin d’une adresse. C’est lors de la mise en place de ce hook que l’on peut utiliser le hook_permission afin de restreindre l’accès à une page en fonction d’un rôle.

hook_menu_alter : permet de modifier les propriétés de n’importe quelle url définie dans un hook_menu. Par exemple vous pouvez modifier, le titre d’une page, les droits d’accès, voir même surcharger la page callback.

Drupal et les hooks systems

hook_cron : ce hook vous permet d’exécuter des actions périodiques depuis votre Drupal, comme par exemple l’envoi de mail, la mise à jour de fichiers ou encore la génération de backup. Personnellement je préfère utiliser la cron du serveur plutôt que celle de Drupal, mais pour cela il faut avoir accès aux serveurs ce qui n’est pas possible sur un mutualisé.

hook_mail : c’est le hook à implémenter si vous voulez envoyer des emails via Drupal. Celui-ci permet aux modules de préparer des messages qui seront envoyés par la suite avec la fonction drupal_mail.

hook_mail_alter : permet de modifier les messages envoyés par les autres modules

Thème

hook_theme : recense toutes les fonctions de thème disponible sur votre site, ainsi lorsqu’un module doit implémenter une nouvelle fonction, il suffit de la déclarer au moyen de ce hook. Une fois connue par Drupal, celle-ci devient disponible à tout moment et peut être utilisée grâce à la fonction theme().

J’espère que cette liste et ces quelques explications sur le système de hook vous permettront de mieux comprendre et utiliser Drupal, il existe beaucoup plus de hook que ce qu’il y a dans cet article mais pour les découvrir il vous faudra explorer Drupal par vous même. En attendant vous trouverez ici la liste de tous les hooks que vous pourrez rencontrer avec Drupal 7

Pages