Laden von jQuery vor anderem Javascript in Joomla 3

8

Ich passe eine benutzerdefinierte Komponente an Joomla 3 an. Sie beruht auf jQuery, das ich zuvor in mich geladen habe. Jetzt, wo es in der Basisvorlage enthalten ist, muss ich das nicht. Allerdings wird mein benutzerdefiniertes JavaScript, das auf jQuery basiert, zuerst geladen. Ich lade sie unter Verwendung des folgenden Formulars:

%Vor%

Dies schließt sie korrekt in das <head> -Element ein, aber sie werden vor jQuery geladen.

Einige schnelle Suche zeigt abstract class JHtmlJquery in libraries/cms/html/jquery.php , aber ich bin nicht sicher von wo das heißt.

Wie kann ich die Ladereihenfolge ändern, sodass jQuery vor meinen Skripten geladen wird, die davon abhängen? Und kann ich das tun, ohne in den Kerncode zu kommen?

    
Benmj 25.10.2012, 22:36
quelle

4 Antworten

6

Ich habe eine Lösung gefunden. Ich wollte nicht, dass sowohl die Vorlage als auch die Komponenten bootstrap geladen werden, und auf Seiten, die nur einzelne Artikel sind, die einige Module laden, wollte ich nicht, dass jedes Modul Bootstrap lädt. (Ich meine, das ist ein bisschen lächerlich geworden ..) Also entschied ich mich Bootstrap komplett aus der Vorlage zu nehmen und ich baute ein System-Plugin, das nur Bootstrap lädt und dann legte ich die Ladereihenfolge des Plugins zuerst laden. Funktioniert großartig ..

%Vor%     
Sean McManus 08.04.2013, 20:30
quelle
9

Mario's Antwort geht in die richtige Richtung, aber es tut es nicht ganz. Es stellt sich heraus, dass Sie den Code für JHtml::('bootstrap.framework'); in Ihre Komponente einfügen müssen (nicht nur die Vorlagendateien), bevor Sie zusätzliche Skripte laden. Ich habe die Vorlage J3 Template Protostar verwendet, die den Bootstrap von Twitter enthält in seiner Vorlage index.php.

Der Code für meine benutzerdefinierte view.html.php ist jetzt wie folgt:

%Vor%

Dies verhält sich wie erwartet, und die Dateien jQuery und Bootstrap ( jquery.min.js , jquery-noconflict.js und bootstrap.min.js ) sind in <head> vor meinen benutzerdefinierten Skripten enthalten.

    
Benmj 29.10.2012 16:02
quelle
2

Welche Vorlage verwenden Sie? In J3 ist es üblich, die jQuery-Plattform unten auf der Seite zu laden, damit die Seiten schneller geladen werden. Schau in deiner Vorlage nach %Code% und versuche deine js danach zu laden.

    
McRui 26.10.2012 00:39
quelle
1

Joomla schreibt wahrscheinlich die Skripte und CSS-Dateien, die in der Reihenfolge $document->addScript( PATH TO SCRIPT); enthalten sind, in der Reihenfolge, in der sie hinzugefügt werden, indem sie Komponenten- und Modulcode ausführen.

Ich habe ein wenig gesucht, konnte aber keinen Weg finden, das Laden separater Deklarationen oder jQuery zu beeinflussen. Aber ich kann eine andere Lösung anbieten.

Ich kann nicht sagen, dass ich sicher bin, dass dies die Lösung für Ihr Problem sein wird, weil ich keine Ahnung habe, was Ihr Code macht oder wann er etwas tun muss. Ich komme also mit der größtmöglichen Lösung;)

Dies funktioniert, solange Ihr Code nicht aktiv sein muss, bevor die Seite fertig ist.

Fügen Sie Ihren benutzerdefinierten Code in eine js-on-ready-Anweisung ein, damit er erst nach dem Laden der Seite (und demzufolge jQuery) geladen wird.

%Vor%     
Mark Vink 26.10.2012 09:12
quelle