A la demande générale d'un seul et unique développeur et utilisateur de Joomla, qui m'a beaucoup dépanné dans mes projets, cet utilisateur avancé m'a demandé s'il était possible de lui développer un outil permettant de sélectionner au travers de l'interface d'administration, l'ensemble des bibliothèques JavaScript qu'il souhaite intégrer dans ses projets. De mon côté, j'ai déjà eu un besoin similaire de cette fonctionnalité mais plutôt pour mes fichiers CSS. Ainsi, ce module va intégrer CSS et JavaScript externes à vos différentes pages selon les conditions de Joomla. Voyons son fonctionnement.
Philosophie
Je m'appuie sur le cœur même d'une fonctionnalité de Joomla, à savoir la possibilité pour un module, d'être affiché ou non sur une page en fonction de certaines conditions. Dans notre cas, ce module n'affichera aucun retour à l'écran, sauf si vous cochez la case à cocher débogages, mais dans sa fonctionnalité, cela ne sert strictement à rien. Cette case à cocher vous permet lors de la mise en place de votre module, de voir s'il est simplement bien pris en compte dans votre page. En effet, si vous cochez cette case, vous verrez un message blanc sur fond rouge ou sera notifié vous avez activé le mode débogage du module mod_javaScript.
Petite parenthèse
Je fais tout de suite une petite parenthèse sur le nom de ce module ainsi que sur sa fonctionnalité. En effet, je l'ai appelé mod_javaScript car au point de départ, je ne comptais pas intégrer l'activation ou non de feuille de style CSS. J'ai rajouté cette fonctionnalité après coup, sans renommer le nom de ce module.
Utilisation et fonctionnement de ce module.
Si vous maîtrisez Joomla, vous aurez compris que ce module est utilisé afin de contourner et mamailler l'outil. En effet, un module en général affiche un contenu. Dans ce cas, hormis en mode debug aucun contenu n'est affiché, mais les définition des fichier CSS et JS dans la console d'admin sont bien chargés.
J'utilise un module pour pouvoir utiliser les fonctionnalités de joomla intitulées addstylesheet et addscript. La première méthode permet d'intégrer dans votre module, une feuille de style, et la deuxième méthode permet d'inclure dans votre module, un script Javascript (beurk:-) .
Or, comme nous intégrons des fichiers externes, ceux-ci sont intégrés dans le head de votre page html. Cela signifie donc que le style ainsi que les scripts ne sont pas associés à ce module précisément mais à la page complète. Ainsi, l'ensemble des scripts déclarés ainsi que les feuilles de style déclarées dans ce module seront appliqués à l'ensemble des pages dont vous allez spécifier, dans l'administration de ce module, les caractéristiques. Pour spécifier ses caractéristiques, je me base sur l'administration classique de Joomla, c'est-à-dire dans l'administration, dans l'onglet affectation, vous pouvez définir ou ce module va être activé.
Et comme j'utilise l'API de Joomla pour charger les feuilles de style et les fichiers de (java)scripts, nous allons avoir exactement sur les pages que l'on souhaite, à savoir l'ensemble des scripts déclarés dans le module. Ainsi, vous pourrez définir autant de modules que de choix de feuilles de style et de script Javascript que vous souhaitez afficher dans votre page, et ce, selon les pages que vous souhaitez. Reste à vous de définir soit le couple JavaScript ↔ feuille de style, soit uniquement un script dans le module ou encor uniquement une feuille de style dans ce module. Bien que ce module soit invisible, je vous retourne donc à la gestion classique d'un module dans Joomla.
Affectation et conditions
Je reviens rapidement sur la notion d'affectation du module, le deuxième onglet dans votre console d'administration de votre module. C'est bien ici que vous devez définir les conditions précises ainsi que les "lieux" où vous souhaitez attribuer ce module invisible. C'est d'ailleurs pour cette raion précise que c'est un module et non un plugin !
Débogage
Comme ce module est un module invisible, j'ai défini une case à cocher "débogage" dans la console d'administration de l'outil. Une fois activé, cette case à cocher vous permet simplement d'avoir un message qui vous spécifie que le module est bien mis en place. Son utilisation réside dans le fait que, comme module est invisible, il se peut, (et ça c'est à m'arrive très souvent), d'oublier d'affecter à mon module soit une position, soit une condition d'affectation. Dans ce cas le module n'est pas activé. Et comme ce module est invisible, vous ne pouvez pas savoir s'il est actif ou non. En cochant cette case, vous visualisez le fait que le moodule est bien pris en compte. Une fois vu, il ne vous reste plus qu'un décocher cette case.