Für ein schnelles Laden der Seite muss ich JS am Ende der Seite aus Komponenten und Modulen einfügen.
Die folgende Art, Skripte zu deklarieren, funktioniert nicht, um sie unten einzufügen, da es keinen Parameter gibt, um sie in die Fußzeile zu setzen.
$rsws_document = JFactory::getDocument();
$rsws_document->addScript();
Was sind die prägnanten Wege, um meinen Zweck zu erfüllen? Wenn joomla keine solche Funktionalität bietet, ist dies ein erheblicher Nachteil für die Seitenladegeschwindigkeit.
Ich möchte auch benutzerdefinierte Stylesheets aus einem Modul hinzufügen, damit sie nur einmal in die Seite eingefügt werden, selbst wenn dasselbe Modul sie mehrmals auf dieser Seite hinzufügt.
<style type="text/css"> .classname { color:red; }.....</style>
Wie kann ich das erreichen?
Antworten:
JDocument-> addScript () bietet Optionen, um das Laden des Skripts zu verschieben und / oder es asynchron zu laden. Siehe das API-Dokument: http://api.joomla.org/cms-3/classes/JDocumentHTML.html#method_addScript
Auf diese Weise kann der Browser die Skripte später im Prozess laden, was die Ladezeit der Seiten erleichtert.
Es gibt keine API zum Laden der Skripte am Ende der Seite. Wenn Sie dies benötigen, müssen Sie Erweiterungen von Drittanbietern verwenden oder diese direkt zur Vorlage hinzufügen.
quelle
Inzwischen gibt es meines Erachtens keine Möglichkeit, Skripte am Ende der Seite zu laden.
Für Ihre zweite Frage können Sie eine statische boolesche Eigenschaft verwenden und diese beim ersten Rendern Ihres CSS auf true setzen. Testen Sie für folgende Modulinstanzen einfach diese Eigenschaft, um zu entscheiden, ob Sie Ihre CSS hinzufügen müssen oder nicht.
Möglicherweise ist eine Modul-Hilfsklasse ein guter Ort, um diese statische Eigenschaft hinzuzufügen.
Grüße,
quelle
$ document-> addScript () fügt immer Skripte im Header-Bereich vor dem Tag hinzu. Wenn Sie also eine Skriptdatei am Ende der Seite laden möchten, müssen Sie die js einfach mit in diese Datei aufnehmen
<script src="{pathtojacvascriptfile}"></script>
Ich hoffe das könnte helfen
quelle
Derzeit gibt es keine Methode, um der Fußzeile ein Skript hinzuzufügen. Sie können jedoch ein Plugin erstellen, das die Ausgabe erhält, nach einem entsprechend benannten Tag wie der Fußzeile sucht und mit str_replace Ihren Code hinzufügt.
Mit diesen Erweiterungen können Sie jedoch Folgendes erreichen:
Auch ich habe eine Methode gefunden. Ich ziehe es vor, den Kerncode nicht zu hacken, aber das ist das Beste, was ich mir im Moment einfallen lassen kann.
Bitte überprüfen Sie diesen Link - Javascript-Dateien enthalten in der Fußzeile
Ich hoffe es wird anderen helfen :)
quelle
Wir verwenden ein Modul namens "Blank Module", mit dem Sie jedes Skript (PHP, Java, CSS, HTML usw.) einfügen und auswählen können, wo es geladen werden soll (Kopf, Körper, Ende des Körpers usw.).
Es ist kostenlos und ich fand es absolut nützlich: http://extensions.joomla.org/extensions/core-enhancements/coding-a-scripts-integration/custom-code-in-modules/3668
Das Verschieben von Skripten von unten nach unten ist etwas mehr Arbeit. Benutze das:
In die Vorlage aufnehmen:
Fügen Sie für jedes Skript, das Sie aus head entfernen möchten, eine "nicht gesetzte" Zeile hinzu. Fügen Sie es dann dem leeren Modul hinzu, das unten geladen wird (Debug-Position?). Ein Plus, wenn Sie verschiedene leere Module erstellen, ist, dass Sie Skripte nur bei Bedarf laden können (z. B. eine Modulinstanz nur für Motools, die nur auf einer bestimmten Seite geladen wird).
Für Stile können Sie auch das leere Modul verwenden.
Ich hoffe das hilft.
quelle
Ich habe es noch nicht alleine versucht. Sie können ein Modul erstellen, das kein HTML anzeigt, sondern nur Skripte und Stile druckt, aber es befindet sich an der unteren Modulposition auf den Seiten, auf denen Ihr anderes Modul angezeigt wird.
quelle