J'utilise JHtml::script
pour ajouter des scripts à mes pages dans un module personnalisé. Cependant, ces scripts sont injectés dans la tête avant que J3 n’ajoute 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?
Tu devrais appeler
JHtml::_('jquery.framework');
avant votre autre script JHtml ::. Autant que je sache, jQuery est chargé en premier.
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", ainsi qu'un dossier "css" et un "js".
La deuxième solution est plus conforme à l’API joomla 3.X.X.
J'espère que ça aide.
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!
Je voulais ajouter mes deux bits après le fait. J'ai quelques scripts et feuilles de style qui doivent être chargés pour chaque vue du composant. Je voulais un point unique pour que cela se produise, garantissant également qu'ils sont chargés dans le bon ordre.
Dans le fichier components\myComponent\mycomponent.php
:
defined('_JEXEC') or die;
// Include dependancies
jimport('joomla.application.component.controller');
JHtml::stylesheet('http://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css', array(), true);
JHtml::stylesheet('components/com_mycomponent/assets/css/mycomponent.css');
JHtml::_('jquery.framework'); // Make sure jQuery is loaded before component JS
JHtml::script( 'components/mycomponent/assets/js/jquery.cookie.js');
// Execute the task.
$controller = JControllerLegacy::getInstance('Mycomponent');
$controller->execute(JFactory::getApplication()->input->get('task'));
$controller->redirect();
Ceci est probablement dû à la méthode que le développeur de mod_tiles
a utilisé pour importer les scripts. Je suppose qu'ils ne se sont pas tenus aux normes de codage Joomla dans cette situation.
Vous avez 2 options (que je peux penser) hwre:
JHtml
.J'espère que cela t'aides