Structure d'un module

Billet

Avec la version 2.27 de Dotclear la structure de plugins et thèmes devient plus rigide. Cette structure deviendra obligatoire assez rapidement.

La structure générale d'un module est quasi commune aux plugins et aux thèmes. Elle se définit comme suit.

Nom

Depuis la mise en place des espaces de nom pour les modules, le nom du répertoire racine du module sera son ID et son espace de nom PHP. De ce fait il est proscrit tous caractères autres que des chiffres et lettres et le nom doit commencer par une lettre.

  • Invalide : mon-plugin, 1to3plugin,
  • Valide : monplugin, MonPlugin2,
Fichiers à la racine du module :
  • _define.php : Fichier de définition
  • _disabled : Fichier de désactivation
  • _init.php : Fichier de définition d'initialisation
  • CHANGELOG.md : récapitulatif des modifications/versions
  • dcstore.xml : Fichier de définition de dépôt distant
  • icon.svg : Icône
  • icon-dark.svg : Icône sombre
  • LICENSE : Licence
  • README.md : Document d'introduction
Répertoires à la racine du module :
  • css : Feuilles de styles
  • default-templates : Templates
  • img : Images
  • js : Scripts javascript
  • locales : Traductions
  • src : Espace de nom contenant tous les fichiers .php
Fichiers du dossier src :
  • Backend.php : ex _admin.php Préparation de la partie admin,
  • Config.php : ex _config.php Configurateur,
  • Frontend.php : ex _public.php Préparation de la partie publique
  • Install.php : ex _install.php Processus d'installation
  • Manage.php : ex index.php Page de gestion principale
  • My.php : fonctions prédéfinies d'aides au code
  • Prepend.php : ex _prepend.php Préparation générale
  • Widgets.php : ex _widgets.php Gestion des widgets par le plugin widgets
Bonnes pratiques

Il est vivement recommandé (possible obligation à l'avenir) d'utiliser l'ID du module pour l'identifiant de ses paramètres dans les espaces de paramètres (blog settings) et les espaces de préférences (user pref).
Il est recommandé de séparer les behaviors trop volumineux des fichiers Backend.php / Frontend.php et de les mettre dans un fichier BackendBehaviors.php / FrontendBehaviors.php.
De manière générale le nom de fichier et donc de classe doit être en rapport avec sa fonction, par exemple une classe contenant toutes les méthodes en rapport aux templates coté public sera nommé FrontendTemplate.

Ce document est en cours d'écriture, il est incomplet.

Le contenu de ce document a été écrit suivant le code de la version 2.27 de Dotclear.

La discussion continue ailleurs

URL de rétrolien : https://dotclear.watch/trackback/8