Chapitre: Surcharge de fichiers de modules
« Système de thèmes | ^ Développement avancé | Développer et utiliser des plugins » |
Il peut arriver que vous utilisiez un module fourni par un tiers, et que certains fichiers ne vous conviennent pas tout à fait. Plutôt que de les modifier directement, Jelix propose un moyen de redéfinir ces fichiers sans les toucher. Cela permet plus tard de mettre à jour ce module tiers sans écraser vos modifications.
Les fichiers d'un module que vous pouvez redefinir sont :
- les templates, par le biais de thèmes
- les fichiers de /composants/locales
- les fichiers /composants/daos
- les fichiers forms
Pour les thèmes, voir la page spécifique. Le thème par défaut se nommant "default", il suffit de mettre les nouveaux templates dans le répertoire de ce thème.
Pour les autres types de fichiers, il faut mettre les nouveaux fichiers dans le
répertoire app/overloads/
. Ce répertoire contient des sous-répertoires
ayant les noms des modules. Ces sous-répertoires sont alors organisés comme les
modules.
Par exemple, imaginons que vous vouliez redéfinir des fichiers du module exemple.
- vous placerez les daos dans
app/overloads/exemple/daos/
- vous placerez les forms dans
app/overloads/exemple/forms/
- vous placerez les locales dans
app/overloads/exemple/locales/
Les noms des fichiers doivent être les mêmes que les originaux. Pour les daos, n'oubliez pas de respecter l'api du dao original. C'est à dire que si des méthodes sont définies dans le dao original, il faut aussi les définir dans le nouveau fichier, sinon vous risquez d'avoir des erreurs PHP parce que les classes du module ne pourront appeler lesdites méthodes.
Ensuite c'est tout. Le fait de mettre un fichier dans le répertoire
app/overloads/
redéfinit automatiquement le fichier original
correspondant. Ce sera ce nouveau fichier qui sera utilisé et non pas
l'original.
Note : dans Jelix 1.6 et inférieur, le répertoire overloads/
était dans
var/
et non dans app/
. Dans Jelix 1.7 et suivant, cela est toujours
possible, mais reservez var/overloads/
pour les fichiers qui sont générés
à la volée par votre application (comme des formulaires construits par
l'utilisateur par exemple), ou qui sont spécifiques à l'environnement dans lequel
est installé l'application. Ceux que vous créez durant le développement sont
donc dorénavant à mettre dans app/overloads/
.