J'utilise JHtml::script
pour ajouter des scripts à mes pages dans un module développé sur mesure. Cependant, ces scripts sont injectés dans la tête avant que J3 ajoute dans jQuery - par exemple:
<!-- my module js -->
<script src="/modules/mod_tiles/js/jquery.isotope.min.js" type="text/javascript"></script>
<script src="/modules/mod_tiles/js/jquery.hoverintent.min.js" type="text/javascript"></script>
<script src="/modules/mod_tiles/js/mod_tiles.js" type="text/javascript"></script>
<!-- then joomla loads jQuery --->
<script src="/media/jui/js/jquery-noconflict.js" type="text/javascript"></script>
<script src="/media/jui/js/jquery.min.js" type="text/javascript"></script>
Comment puis-je forcer Joomla à charger jQuery avant tout autre script?
joomla-3.x
jquery
codinghands
la source
la source
mod_tiles.php
cette jQuery forcée à charger en premier. Je vous remercie!si j'ai bien lu votre question, vous développez votre propre module.
Essayez ceci, dans default.php - la vue du module (dans "tmpl"):
JHtml::stylesheet('modules/'.$module->module.'/assets/css/yourfile.css');
JHtml::script('modules/'.$module->module.'/assets/js/yourscript.js');
Ou ca :
JHtml::_('stylesheet', 'modules/'.$module->module.'/assets/css/anotherfile.css');
JHtml::_('script', 'modules/'.$module->module.'/assets/js/othercript.js');
Dans les deux cas, vos fichiers JS doivent être injectés après jQuery, à condition que vous ayez créé un dossier "asset" et un dossier "css" et "js" à l'intérieur.
La deuxième solution est plus conforme à l'API joomla 3.XX.
J'espère que cela aide.
la source
assets
dossier - cela n'a pas changé, et les scripts se chargent toujours avant jQuery. Je me demande également s'il estdefault.php
dans letmpl
dossier (modèle) du module. J'aurais pensé que les scripts devraient être chargés dansmod_tiles.php
(le 'contrôleur') plutôt quedefault.php
(la vue).J'ai rencontré ce problème la semaine dernière et il était lié à l'endroit où j'appelais JHtml :: script. Faites-vous cela dans votre vue ou dans le modèle de la vue? Si vous essayez d'ajouter les scripts dans la vue elle-même (views / yourview / view.html.php), ils seront insérés avant les propres scripts de Joomla!, Mais si vous ajoutez les scripts dans le modèle (views / yourview / tmpl / default.php) ils seront insérés après les scripts de Joomla !.
Bonne chance!
la source
tmpl
. J'ai essayé d'ajouter les scripts dans mod_tiles.php et default.php - les deux se chargent avant jQuery.Cela est probablement dû à la méthode utilisée par le développeur de
mod_tiles
pour importer les scripts. Je suppose qu'ils n'ont pas respecté les normes de codage Joomla dans cette situation.Vous avez 2 options (auxquelles je peux penser) hwre:
JHtml
.J'espère que cela t'aides
la source
Je voulais ajouter mes deux bits après coup. J'ai quelques scripts et feuilles de style qui doivent être chargés pour chaque vue que nous avons dans le composant, et je voulais un point unique pour que cela se produise en veillant également à ce qu'ils soient chargés dans la séquence correcte.
Dans le dossier
components\myComponent\mycomponent.php
:la source
Je sais que c'est un vieux sujet, mais êtes-vous déjà allé au fond des choses? Je viens de rencontrer le même problème. J'ai identifié la CAUSE mais pas le problème / la solution; J'ai une suspicion sournoise que c'est un BUG mais pourrait faire avec quelqu'un d'autre l'essayer.
Scénario: vous avez créé un module qui inclut un script dépendant de jQuery, vous utilisez donc les éléments suivants dans votre vue default.php:
Vous installez ensuite le module et lui donnez une position de module, disons «gauche». Lorsque vous regardez le code source frontal, tout semble bon, tous les scripts se chargent après les scripts inclus dans
CEPENDANT, si vous donnez au module une position «accordéon» et utilisez la fonction joomla loadposition pour ajouter le module à un article
puis accordéion.js est ajouté AVANT les fichiers bootstrap.framework.
La seule façon dont j'ai pu le faire fonctionner est d'ajouter le script en tant que script en ligne plutôt que d'être inclus dans la tête.
EDIT: il en va de même pour l'inclusion du CSS; il est ajouté en haut de la liste des déclarations css (avant les fichiers css de modèle et d'amorçage). Le bodge pour cela est d'ajouter! Important aux déclarations CSS.
la source