Si vous développez en utilisant Eclipse PDT, vous pouvez faciliter l'écriture de vos modules Drupal en utilisant des templates. Voici comment procéder (HOWTO) :
Qu'est-ce qu'un template
En français, on la nomme en général un squelette, patron, ou macro. L'idée est de ne taper qu'un nom identifiant ce qu'on veut faire, puis - en tapant Ctrl-Espace - d'appeler quelques lignes de code qu'il n'y aura plus qu'à personnaliser rapidement. L'intérêt de l'opération est triple :
- Vous frappez moins de code
- Ce code est (si votre macro est bien écrite) correct et exempt de fautes de frappe
- Chaque macro que vous frappez vous rappelle la syntaxe du code engendré dans le module Drupal, ce qui fait que vous finissez par très bien le connaître
Exemple dans Eclipse PDT : la macro if
Nous pouvons regarder le contenu des macros en utilisant les menus d'Eclipse PDT :
Windows => Preferences => PHP => Editor => Templates.
Une liste des templates existant déjà s'affiche. Examinons la macro if
en sélectant son nom. Nous y trouvons ceci (à l'exception de la première et de la dernière ligne, utilisées ici pour activer la coloration syntaxique)
<?phpif (${condition}) { ${cursor};}?>
Ce template contient deux métavariables :
- une nommée
${condition}
, qui sera remplacée par un contenu qu'il nous sera demandé de saisir
- une nommée
${cursor}
qui indique juste où viendra se placer le curseur ensuite
Par "méta", il faut entendre que ce sont des variables propres aux macros et non des variables PHP.
Utilisation de la macro if
Frappons if
suivi de Ctrl-Espace : le texte du code apparaît, la métavariable ${condition}
étant remplacée par une fenêtre de texte dans laquelle nous frappons la condition testée; une fois celle-ci saisie, nous n'avons plus qu'à frapper Tab pour nous retrouver à la position définie par ${cursor}
.
Si nous avions plusieurs métavariables dans notre code, on passerait de chacune à la suivante en pressant Tab
Note : Si plusieurs macros commencent par if, Eclipse vous proposera de sélectionner celle qui vous intéresse dans une liste
Application à Drupal : créons la macro menu
Créons maintenant une macro menu
pour nous aider à coder un
hook_menu() semblable à celui de la page 16 de
Pro Drupal Development
version 2, chapitre 2. Il suffit pour cela, sur la page d'affichage des noms de macros, de cliquer sur New. Nous voyons apparaître trois champs de saisie nous demandant :
- Le nom de la macro (nous saisissons donc : menu)
- Une brève description : nous nous contenterons de dire de quoi il s'agit : un
hook_menu()
générique
- Le texte de la macro, qui va être par exemple le suivant :
<?php/** * (hook)_menu * * @return ${dollar}items : */// See PDD, chapter 2, "implementing a hook"/** * Implements hook_menu(). */function ${hook}_menu() { ${dollar}items['admin/settings/${hook}'] = array( 'title' => '${hook}', 'description' => '${hook} : ', 'page callback' => 'drupal_get_form', 'page arguments' => array ('${hook}_admin_settings'), 'access arguments' => array('administer site configuration'), 'type' => MENU_NORMAL_ITEM, 'file' => '${hoook}.admin.inc', ); return ${dollar}$items; } // ${hook}_menu${cursor}?>
Note : Rappelons que la première et la dernière lignes n'appartiennent pas au contenu de la macro, et servent uniquement à activer ici la coloration syntaxique
Remarquons qu'ici la métavariable ${nom}
apparaît plusieurs fois. Que va-t-il se passer lorsque nous frapperons du contenu dans la fenêtre de saisie associée ? Le même contenu sera frappé à tous les endroits où apparaît cette métavariable dans le code : voilà un excellent moyen d'écrire du code cohérent en évitant toute erreur de recopie.
Quant à ${dollar}
, c'est simplement la façon de désigner le caractère $
lui-même dans une macro.
Nous n'avons plus maintenant qu'à sauver cette macro (le bouton de fermeture ne sera proposé que si sa syntaxe est correcte (pour cette raison, commencez par écrire des macros simples), et à revenir à Eclipse.
Utilisons la macro menu
Et voilà ! A partir de maintenant, il nous suffit pour faire venir le code associé à un hook_menu()
de frapper menu
puis Alt-Espace
, de remplir les champs de saisie, puis le nom de la fonction de menu, et nous codons en quelques secondes le hook_menu()
désiré. On aura certes tout avantage à le peaufiner ensuite; reste que tel quel, il est d'ores et déjà opérationnel
Exportation d'une macro
Vous remarquerez sur la fenêtre affichant la liste des macros un bouton Export qui permet d'exporter le contenu de la macro courante de la liste.
Et, maintenant, à vous !
Si l'exercice vous a plu : n'hésitez pas à coder vos propres macros et à me les envoyer ici, sous sous forme source, soit sous forme exportée