peLmeL.org
Accueil du site > peLmeL Blog > Drupalium > Mon premier module avec Drupal

Mon premier module avec Drupal

mardi 17 février 2009, par Brice Favre


Toujours dans mon exploration de Drupal, je me suis cette fois, penché sur la création d’un module. Je débute totalement, le but est de ce billet est de noter les différents informations que j’ai pu collecter au cours de mes recherches. Le but à l’origine était d’écrire un tuto plus complet, mais je vous recommande plutôt de vous tourner vers celui de l’artisan numérique.

Initialisation

Si j’ai bien tout compris, chaque module dispose de son propre répertoire. Ils sont généralement placés dans le répertoire modules de l’arborescence du site. La première chose à faire est donc de créer le répertoire monmodule. Comme il s’agit d’un module personnel, il est recommandé de le placer plutôt dans le répertoire sites/all/modules. Lors des mises à jour ou déplacement de sites, vous n’aurez qu’à reprendre l’arborescence sites pour installer vos modules.

Un module se compose, au minimum de deux fichiers, monmodule.info et monmodule.module. Le premier fichier va vous permettre de placer les informations de votre module :

  1. name = monmodule
  2. description = Mon premier module
  3. package = Mes Modules - optional
  4. version = VERSION
  5. core = 6.x

Si vous retournez sur l’administration, vous aurez la joie (gloria) de voir votre module s’afficher, dans la catégorie Mes modules.

Le fichier monmodule.module va contenir le code PHP de votre module. Personnellement je ne suis pas très fan de cette nomenclature qui peut poser quelques soucis avec des administrateurs/hébergeurs peu consciencieux. Donc attention et protégez bien vos répertoires.

Une fois le fichier créé, votre module est prêt à être installer

Code du module

Pour développer un module, il suffit de créer, à l’intérieur de votre fichier .module des fonctions qui vont vous permettre d’interagir avec le Core du CMS. Ces fonctions appelées hook (hameçon ou crochet en français) et doivent répondre à la nomemclature suivante : monmodule_nomhook.

Par exemple, le code suivant utilise le crochet block et va créer un bloc affichant une valeur paramétrable :

  1. function monmodule_block ($op = 'list', $delta = 0, $edit = array()){
  2.     // Enumeration des blocs disponibles
  3.     if ($op == 'list') {
  4.         $blocks['monmodule'] = array(
  5.             'info' => t('Mon bloc'));
  6.         return $blocks;
  7.     // Opération de configuration
  8.     } else if ($op == 'configure') {
  9.         $form['monmodule_var'] = array(
  10.             '#type' => 'textfield',
  11.             '#title' => t("Info ? "),
  12.             '#default_value' => "info",
  13.         );
  14.         return $form;
  15.     // Opération de configuration
  16.     } else if ($op == 'save') {
  17.         variable_set ('monmodule_var_value', $edit['monmodule_var']);
  18.     // Opération d'affichage
  19.     } else if ($op == 'view') {
  20.          $block = array('subject' => t('monmodule'),
  21.          'content' => 'Info : '.variable_get ('monmodule_var_value', 'Foo'));
  22.          return $block;
  23.     }
  24. }

Il n’y a rien de plus à faire. Le bloc sera instantanément intégré au CMS, vous pourrez le manipuler comme tous les autres blocs.

La liste exhausitive des hooks est disponible sur le site de l’API Drupal.

Que peut on faire ensuite ?

A partir de là, vous pouvez à peu près tout faire : Créer des blocs, des contenus, générer des formulaires, accéder aux thèmes, menus et recherche. Il existe des exemples de module types sur le site de l’API Drupal ainsi que sur le tutoriel plus haut. L’avantage du système de ce CMS est de permettre, grâce à quelques fonctions d’intervenir et de se placer au coeur de l’application.

De plus drupal fourni une série de fonctions pour accéder aux bases de données sans soucis du type de SGBD, ainsi que des fonctions pour traiter les uploads de fichier

Et alors ?

Alors tout est bien dans le meilleur des mondes ? A mon avis pas tout à fait. Je pense, comme beaucoup de développeur, que l’utilisation du langage objet est un plus et que l’utilisation d’un framework est indispensable à tout développement. On pourrait dire que Drupal est un peu un CMF (Content Management Framework) et qu’il y’a de très bonne idée. Las, on se rend vite compte des défaut inhérents aux développement de fonction : pas d’espace de classes, pas de recours aux interfaces, difficiles de typer des informations. En bref on se retrouve bien souvent a parcourir la doc de l’API, qui, heureusement est bien faite. La couche d’accès aux données est aussi très intéressante, mais à quand le développement d’un ORM ?

En conclusion, Drupal est un bon CMS, richement doté mais je pressens quelques difficultés quand viendra l’heure de développer de nouveaux modules... ou pas ?

Gouttes

Répondre à cet article

4 Messages de forum


Suivre la vie du site RSS 2.0 | Plan du site | Espace privé | SPIP | squelette