J'utilise souvent des scripts custom que j'ajoute à Joomla!, pour gérer par exemple des slideshows, lightboxs, ou effets de navigation. Souvent basés sur du jQuery, ces scripts entrent parfois en conflt avec le core de Joomla!, le template que j'utilise, ou d'autres composants installés, même si Joomla! fonctionne également avec jQuery et qu'il intègre jquery-noconflict.js.
Une solution très efficace que j'utilise régulièrement quand je n'arrive pas à mes fins avec le jQuery noConflict est de s'appuyer sur les IDs de menu de Joomla pour appeler ou non certains scripts.
Dans un premier temps, on va chercher l'ID de menu de la page actuelle :
<?php
/** On detecte le menu ID */
$app = JFactory::getApplication();
$currentMenuID = $app->getMenu()->getActive()->id;
?>
Puis on s'appuie sur un if statement (dans cet exemple, je veux appeler mes scripts custom sur toutes les pages, sauf celle où j'ai un conflit, qui a pour ID de menu XXX) :
<?php if ($currentMenuID == 'XXX') {
}
else { ?>
<script src="/<?php echo T3_TEMPLATE_URL ?>/js/script-a-appeler.js"></script>
<script>
jQuery(function($) {
fonctionjQuery...
});
</script>
<?php } ?>
Note : <?php echo T3_TEMPLATE_URL ?> me sert à écrire le path vers mon template avec le t3 framework que j'utilise pour tous mes sites sous Joomla!.
Cette détection de menu ID peut également être utile pour appeler des fichiers css supplémentaires, ou toute autre variable de template ou d'affichage dont on pourrait avoir besoin.
BLOG COMMENTS POWERED BY DISQUS