Laden der jQuery-vor anderen Javascript in Joomla 3
Ich bin an einer benutzerdefinierten Komponente für Joomla 3. Es basiert auf jQuery, das ich zuvor in mir. Jetzt, wo es ist eingeschlossen in der Basis-Vorlage, ich brauche es nicht. Aber, meine benutzerdefinierter javascript-Code, setzt auf jQuery wird geladen. Ich laden Sie mit dem folgenden Formular:
$document = JFactory::getDocument();
$document->addScript( PATH TO SCRIPT);
Diese ordnungsgemäß schließt Sie in die <head>
element, aber Sie sind geladen, bevor jQuery.
Einige schnelle Suche zeigt abstract class JHtmlJquery
im libraries/cms/html/jquery.php
aber ich bin mir nicht sicher, von wo dieses aufgerufen wird.
Wie kann ich die Ladereihenfolge so, dass jQuery geladen wird, bevor meine Skripte, die davon abhängen? Und kann ich dies tun, ohne in den core-code?
- verwenden Sie $Dokument->addCustomTag('<script src="PFAD ZUM SCRIPT" type="text/javascript"></script>'); benutzerdefinierte tags geladen werden, nachdem alle anderen Skripts geladen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe eine Lösung gefunden. Ich wollte nicht, dass sowohl die Vorlage als auch die Komponenten zum laden von bootstrap, sowie auf Seiten, die nur einzelne Artikel, laden einige Module, die ich nicht haben will, jedes Modul Last bootstrap auch.. (ich meine, das ist immer ein bisschen lächerlich..) So entschied ich mich für bootstrap aus der Vorlage komplett und ich baute ein system-plugin, dass nur Lasten, bootstrap, und dann setze ich den laden, um das plugin zu laden ersten. Funktioniert Super..
Mario ' s Antwort geht in die richtige Richtung, aber es nicht wirklich tun. Es stellt sich heraus, man muss den code für
JHtml::('bootstrap.framework');
innerhalb der Komponente (und nicht nur die template-Dateien) vor dem laden von zusätzlichen Skripts. Ich war mit dem stock-J3-template, protostar, die auch die twitter bootstrap in der Vorlage index.php.Den code für meine eigene view.html.php ist jetzt wie folgt:
Dieser verhält sich wie erwartet und die jQuery und Bootstrap-Dateien (
jquery.min.js
,jquery-noconflict.js
, undbootstrap.min.js
) sind im<head>
vor meinen eigenen scripts.Welches template benutzt du? In J3 ist es einen gesunden Menschenverstand, um das laden der jQuery-Plattform, die am unteren Rand der Seite, damit die Seiten schneller laden. Suchen Sie in Ihrer Vorlage für
JHtml::_('bootstrap.framework'); //Loads the jQuery js scripts
und versuchen Sie zum laden der js nach dieser.
Joomla wahrscheinlich schreibt die Scripte und css Dateien in die
$document->addScript( PATH TO SCRIPT);
Art und Weise, in der Reihenfolge, wie Sie Hinzugefügt werden, durch ausführen von Komponenten-und Modul-code.Ich gesucht habe, ein wenig aber konnte Sie nicht finden, eine Möglichkeit, Einfluss auf das laden von separaten Erklärungen oder jQuery. Aber ich kann Ihnen eine andere Lösung.
Kann ich nicht sagen, ich bin mir sicher, dass dies DIE Lösung für dein problem, denn ich habe keine Ahnung, was dein code tut, oder wenn es braucht, um etwas zu tun. Also ich komme mit der weitesten beheben kann 😉
Dies funktionieren wird, solange der code wird nicht aktiv sein müssen, bevor die Seite fertig stellen.
Wickeln Sie Ihre benutzerdefinierten code in eine js-on bereit-Anweisung, also es wird nicht alles tun, bis die Seite ( und damit auch jQuery geladen wurde ).