Ich verwende JHtml::script
das 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 - zum 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?
joomla-3.x
jquery
Codierungshände
quelle
quelle
mod_tiles.php
dieser gezwungenen jQuery, zuerst zu laden. Vielen Dank!Wenn ich Ihre Frage richtig gelesen habe, entwickeln Sie Ihr eigenes Modul.
Versuchen Sie dies in default.php - der 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-Datei (en) nach jQuery eingefügt werden, vorausgesetzt, Sie haben einen "Asset" -Ordner sowie einen "CSS" - und einen "js" -Ordner darin erstellt.
Die zweite Lösung entspricht eher der joomla 3.XX API.
Ich hoffe es hilft.
quelle
assets
Ordners - dies machte keinen Unterschied, und die Skripte werden immer noch geladen, bevor jQuery dies tut. Ich wundere mich auch über die Weisheit, diese Art von Code in eine Vorlagendatei einzufügen (insbesondere wenn es mehrere Vorlagen gibt, die dieselben Skripte, DRY usw. usw. verwenden)default.php
imtmpl
(Vorlagen-) Ordner des Moduls. Ich würde mir vorstellen, dass Skripte eher inmod_tiles.php
(den 'Controller') als indefault.php
die Ansicht geladen werden sollten .Ich bin letzte Woche auf dieses Problem gestoßen und es hing damit zusammen, wo ich JHtml :: script aufrief. Tun Sie dies in Ihrer Ansicht oder in der Vorlage der Ansicht? Wenn Sie versuchen, die Skripte in der Ansicht selbst hinzuzufügen (views / yourview / view.html.php), werden sie vor Joomla! 'S eigenen Skripten eingefügt. Wenn Sie jedoch die Skripte in die Vorlage einfügen (views / yourview / tmpl / default.php) Sie werden nach den Skripten von Joomla! eingefügt.
Viel Glück!
quelle
tmpl
. Ich habe versucht, die Skripte sowohl in mod_tiles.php als auch in default.php hinzuzufügen - beide werden vor jQuery geladen.Dies liegt wahrscheinlich an der Methode, mit der der Entwickler
mod_tiles
die Skripte importiert hat. Ich gehe davon aus, dass sie sich in dieser Situation nicht an die Joomla-Codierungsstandards gehalten haben.Sie haben zwei Möglichkeiten (die mir einfallen):
JHtml
.Hoffe das hilft
quelle
Ich wollte meine zwei Bits nachträglich hinzufügen. Ich habe ein paar Skripte und Stylesheets, die für jede Ansicht in der Komponente geladen werden müssen, und wollte, dass ein einzelner Punkt auftritt, um sicherzustellen, dass sie in der richtigen Reihenfolge geladen werden.
In der Datei
components\myComponent\mycomponent.php
:quelle
Ich weiß, dass dies ein altes Thema ist, aber sind Sie dem jemals auf den Grund gegangen? Ich habe gerade das gleiche Problem erlebt. Ich habe die URSACHE identifiziert, aber nicht das Problem / die Lösung. Ich habe eine hinterhältige Vermutung, dass es sich um einen BUG handelt, aber ich könnte es mit jemand anderem tun, der es ausprobiert.
Szenario: Sie haben ein Modul erstellt, das ein jQuery-abhängiges Skript enthält, sodass Sie in Ihrer default.php-Ansicht Folgendes verwenden:
Sie installieren dann das Modul und geben ihm eine Modulposition, sagen wir 'links'. Wenn Sie sich den Front-End-Quellcode ansehen, sieht alles gut aus. Alle Skripte werden nach den Skripten geladen, die in enthalten sind
JEDOCH, wenn Sie dem Modul eine Position 'Akkordeon' geben und die Joomla-Ladeposition verwenden, um das Modul einem Artikel hinzuzufügen
dann wird accionion.js VOR den bootstrap.framework-Dateien hinzugefügt.
Die einzige Möglichkeit, die Arbeit zu umgehen, besteht darin, das Skript als Inline-Skript hinzuzufügen, anstatt es in den Kopf aufzunehmen.
EDIT: Gleiches gilt für das Einschließen des CSS; Es wird am Anfang der Liste der CSS-Deklaration hinzugefügt (vor den Vorlagen- und Bootstrap-CSS-Dateien). Der Grund dafür ist, die CSS-Erklärungen zu ergänzen!
quelle