Créer une surcharge pour l'édition de module pour Joomla 3.4
Comme vous le savez sûrement l'une des plus importantes fonctions introduites dans Joomla 3.4 est l'édition en front-end des modules (c'est-à-dire sans avoir à passer par l'administration).
C'est un grand pas en avant pour la gestion simplifiée des sites sous Joomla!. Mais (car il y a toujours un mais) la vue d'édition des modules peut être rebutante pour les non administrateurs.
Ceci étant, comme Joomla! est très bien fait, il est possible d'améliorer ça grâce à la "surcharge".
La surcharge, Kesakko ?
La surcharge (override) permet de remplacer un fichier par un autre et ainsi éviter de devoir modifier les fichiers "core" de Joomla. Cela permet d'avoir un site propre pouvant être mis à jour sans souci. On l'utilise majoritairement pour modifier les modules et composants qui n'auraient pas le comportement attendu, ou un affichage ne correspondant pas à vos attentes.
Petit exemple : partons du principe que votre template est "beez3" ; tous les fichiers seront dans templates/beez3
Toutes les surcharges se trouveront dans : templates/beez3/html
où chaque sous-dossier servira à stocker les surcharges pour les composants et les modules
Avant/Après
Attaquons maintenant le vif du sujet :
1 Dans votre dossier html, créez un dossier com_config
2 Dans votre dossier com_config, créez un dossier modules
3 Dans le dossier modules, copiez/collez le fichier default.php (et index.html) venant du dossier /components/com_config/view/modules/tmpl
4 Editez votre fichier default.php pour masquer les options.
Je vous recommande plutôt de cacher des zones pour garder l'intégrité du fichier originel, et ainsi pourvoir faire des comparaisons avec les futures évolutions du fichier "core"
5 Enlevez la possibilité de changer changer la position ligne 104
<div class="control-group" style="display:none;"> <div class="control-label"> <?php echo $this->form->getLabel('position'); ?> </div> <div class="controls"> <?php echo $this->loadTemplate('positions'); ?> </div> </div>
6 Enlevez la gestion des dates (sans ACL) ligne 117
<div class="control-group" style="display:none;"> <div class="control-label"> <?php echo $this->form->getLabel('publish_up'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('publish_up'); ?> </div> </div> <div class="control-group" style="display:none;"> <div class="control-label"> <?php echo $this->form->getLabel('publish_down'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('publish_down'); ?> </div> </div>
7 Enlevez la gestion de l'accès ligne 144
<div class="control-group" style="display:none;"> <div class="control-label"> <?php echo $this->form->getLabel('access'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('access'); ?> </div> </div>
8 Enlevez la gestion de l'ordre ligne 152
div class="control-group" style="display:none"> <div class="control-label"> <?php echo $this->form->getLabel('ordering'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('ordering'); ?> </div> </div>
9 Enlevez la langue ligne 161
<div class="control-group" style="display:none;"> <div class="control-label"> <?php echo $this->form->getLabel('language'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('language'); ?> </div> </div>
10 Enlevez les notes ligne 169
<div class="control-group" style="display:none;"> <div class="control-label"> <?php echo $this->form->getLabel('note'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('note'); ?> </div> </div>
11 Enlevez les options ligne 180
<div id="options" style="display:none;"> <?php echo $this->loadTemplate('options'); ?> </div>
Et voilà ! Avec ça, vous pourrez rendre l'édition de vos modules en Front plus simple tout en gardant la compatibilité pour les futures mises à jour.