it-swarm.com.de

Jhtml :: script order - wie verschiebe ich es, bis jQuery geladen wurde?

Ich benutze JHtml::script zum Hinzufügen von Skripten zu meinen Seiten in einem benutzerdefinierten Modul. Diese Skripte werden jedoch in den Kopf eingefügt, bevor J3 jQuery hinzufügt. Beispiel:

<!-- 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>

Wie kann ich Joomla zwingen, jQuery vor anderen Skripten zu laden?

11
codinghands

Sie sollten anrufen

JHtml::_('jquery.framework');

vor Ihrem anderen JHtml :: Skript. AFAIK dies stellt sicher, dass jQuery zuerst geladen wird.

15
fruppel

wenn ich Ihre Frage richtig gelesen habe, entwickeln Sie Ihr eigenes Modul.

Versuchen Sie dies in default.php - die Ansicht des Moduls (in "tmpl"):

JHtml::stylesheet('modules/'.$module->module.'/assets/css/yourfile.css');

JHtml::script('modules/'.$module->module.'/assets/js/yourscript.js');

Oder dieses :

JHtml::_('stylesheet', 'modules/'.$module->module.'/assets/css/anotherfile.css');

JHtml::_('script', 'modules/'.$module->module.'/assets/js/othercript.js');

In beiden Fällen sollten Ihre JS-Dateien nach jQuery eingefügt werden, vorausgesetzt, Sie haben einen "asset" -Ordner und einen "css" - und einen "js" -Ordner darin erstellt.

Die zweite Lösung entspricht eher der joomla 3.X.X API.

Ich hoffe es hilft.

2
ghazal

Ich bin letzte Woche auf dieses Problem gestoßen und es hing damit zusammen, wo ich JHtml :: script aufgerufen habe. Tun Sie dies in Ihrer Ansicht oder der Ansichtsvorlage? Wenn Sie versuchen, die Skripte in der Ansicht selbst hinzuzufügen (views/yourview/view.html.php), werden sie vor den eigenen Skripten von Joomla! Eingefügt. Wenn Sie jedoch die Skripte in die Vorlage einfügen (views/yourview/tmpl/default.php) werden nach den Skripten von Joomla! eingefügt.

Viel Glück!

2
Zachary Draper

Ich wollte meine zwei Bits nachträglich hinzufügen. Ich habe ein paar Skripte und Stylesheets, die für jede in der Komponente vorhandene Ansicht geladen werden müssen, und wollte, dass ein einzelner Punkt auftritt, der sicherstellt, dass sie in der richtigen Reihenfolge geladen werden.

In der Datei 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();
0
GDP

Dies liegt wahrscheinlich an der Methode, die der Entwickler von mod_tiles hat verwendet, um die Skripte zu importieren. Ich gehe davon aus, dass sie sich in dieser Situation nicht an die Joomla-Kodierungsstandards gehalten haben.

Sie haben zwei Möglichkeiten (die ich mir vorstellen kann):

  1. Wenn die Skripte aus einer Datei im Ordner tmpl des Moduls importiert werden, können Sie Template Override ausführen und ändern die Art und Weise, wie das Skript mit JHtml importiert wird.
  2. Sie können jQuery Easy herunterladen und installieren. Dies ist ein Plugin, das jQuery importiert und über allen anderen Skripten platziert.

Hoffe das hilft

0
Lodder