Créer un module pour dotclear 2

J'ai récemment réalisé mon premier module pour Dotclear 2. La réalisation de ces derniers n'est pas bien compliquée et ressemble à ce que l'on peut retrouver ailleurs avec des notions de "Behavior" (Hook) que l'on retrouve dans PrestaShop. Je vous propose donc un court tutoriel.

Structure générale d'un module

Voici un exemple de liste de fichier que l'on peut retrouver dans un module :

_define.php : Seul fichier nécessaire, définit le nom du module, auteur, permissions, ...
_install.php : Script appelé lors de l’installation
_prepend.php : Fichier appelé à chaque affichage d'une page, c'est ici par exemple que l'on définit les constantes et que l'on inclut les fichiers de classe.
locales/ : Dossier des traductions

Retrouvez plus d'informations dans le documentation officielle

Le fichier _define.php

Dans _define.php, on retrouve les données de définition du module.

  1. <?php
  2. if (!defined('DC_RC_PATH')) { return; }
  3.  
  4. $this->registerModule(
  5. /* Name */ 'Mon module',
  6. /* Description*/ 'Description du module',
  7. /* Author */ 'Maxence de Flotte',
  8. /* Version */ '1.0',
  9. /* Permissions */ 'usage,contentadmin',
  10. /* Priority */ 200
  11. );

Le fichier _install.php

Je ne vais pas détailler grandement ce dernier, la documentation de Dotclear est plutôt bien faite. Mais voici un exemple de fichier d'installation :

  1. <?php
  2. if (!defined('DC_CONTEXT_ADMIN')) { return; }
  3. $moduleName = "monModule"; // nom du dossier du module
  4.  
  5. // Récupérer la version du module
  6. $availableVersion = $core->plugins->moduleInfo($moduleName, 'version');
  7.  
  8. // Récupérer la version du module installé
  9. $installedVersion = $core->getVersion($moduleName);
  10.  
  11.  
  12. // On ne fait rien si le module est à jours
  13. if (version_compare($installedVersion, $availableVersion,'>=')) {
  14. return;
  15. }
  16.  
  17. // On définit la version du module
  18. $core->setVersion($moduleName, $availableVersion);
  19.  
  20. // Traitements
  21.  
  22. return true;

Le fichier _prepend.php

Le fichier _prepend.php permet de définir un certain nombre de choses avant l’exécution du module. Voici ça structure minimale :

  1. <?php
  2. if (!defined('DC_RC_PATH')) { return; }
  3.  
  4. global $__autoload, $core;

Ajouter des classes à l'autoloader

L'autoload permet de dire à PHP quels fichiers contiennent quelles classes, et donc d'éviter de devoir faire des inclusions de fichiers php. Ces derniers ne sont inclus que si la classe est appelée.

Pour ce faire il faut ajouter des entrés dans le tableau global $__autoload

  1. $__autoload['MaClasse'] = dirname(__FILE__).'/fichier.php'; // Il est conseillé de nommer intelligemment les fichiers de classe en les commençant par "class." suivit du nom de la classe, par exemple : "class.maclasse.php".

Déclarer des hooks/behaviors

Les behaviors permettent de modifier le comportement de Dotclear ou d'afficher des éléments personnalisés dans certaines parties du blog et de l'administration. Vous trouverez ici, une liste complète des behaviors.

Par exemple, pour ajouter un élément après le formulaire des commentaires :

  1. $core->addBehavior('publicCommentFormAfterContent',
  2. array('maClasse','methode'));

Générer une archive

Pour générer l'archive de votre module, rien de plus simple, il suffit de compresser le dossier au format zip.

Je vous encourage, pour plus d'informations à lire la documentation officielle.

 
1. Le
26 déc.
2012
11h37
par opticien lyon

Bonjour, j`ai vraiment aimé votre post. Je ne suis pas spécialiste dans , avez-vous d`autres billets sur le même sujet ?
Continuez ainsi, c`est toujours un plaisir de lire votre blog !

Eva.

2. Le
11 juin
2013
14h14
par Benjamin Dupont

Très bon blog , qui renseigne bien ! Je recommande !!

http://ben-dupont.blogspot.fr/

3. Le
25 juin
2013
15h48
par M.Dupont

http://b-dupont.over-blog.com/

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

À propos

Photographie

Maxence de Flotte

Développeur cœur PrestaShop

Passionné de nouvelles technologies

PHP, HTML5/CSS3, jQuery, Bootstrap, LESS CSS, ...

Voir mon CV

Mes projets