Entsprechend der Wiki-Seite Hinzufügen von Javascript und CSS zur Seite können Sie ein Stylesheet addStyleSheet
wie folgt hinzufügen :
$document = JFactory::getDocument();
$document->addStyleSheet($url);
Oder mit JHtml::stylesheet
so:
JHtml::stylesheet($url, array(), true);
Auf der Wiki-Seite Erstellen einer Basisvorlage wird der Lernende jedoch angewiesen, Stylesheets wie folgt einzuschließen:
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/system/css/system.css">
</head>
Dies umgeht addStyleSheet
und JHtml::stylesheet
. Ist das eine gute Idee? Wann würden Sie das erstere verwenden und wann würden Sie das letztere verwenden?
Hinweis: JHtml::_("script", …)
und JHtml::_("stylesheet", …)
sind fast genau das gleiche wie JHtml::script
und JHtml::stylesheet
. Siehe Was ist zu JHtml::_
tun .
Antworten:
JHtml
wird normalerweise in Erweiterungen verwendet, da dadurch Überschreibungen durchgeführt werden können. Dies ist eine wirklich gute Funktion, wenn Sie Entwickler sind. Es wird auch$document->...
um einige zusätzliche Funktionen erweitert.Hier ist ein Beispiel:
Bei Verwendung
JHtml
wird die minimierte Version des Skripts geladen, um die Ladezeiten der Seiten zu verkürzen. Wenn Sie den Debug-Modus in der globalen Konfiguration aktivieren, wird die nicht minimierte Version der Datei geladen , um sie lesbar zu machen.Sie können eine Vorlage nicht auf die gleiche Weise überschreiben wie für Erweiterungen. Daher werden viele Vorlagen verwendet,
<link>
da alle Überschreibungen einfach durch Hinzufügen einercustom.css
Datei und anschließendes Hinzufügen Ihres Codes erfolgen können. Die Verwendung der nativen<link>
Tags ist daher schneller als die Verwendung der Joomla-API zum Laden der CSS-Dateiquelle
JHtml
für eine Vorlage besteht darin, eine Minimierung zu erhalten.<link ...>
Code directyl schreiben würden.Neben den anderen ist der größte Vorteil, den ich gefunden habe, dass sich alle CSS / JSS-Dateien gleichzeitig im selben Array befinden.
Dies klingt möglicherweise nicht nach einem Vorteil, sondern nach einem Ausschnitt aus einem anderen Beispiel
Wenn Sie später Änderungen
system.css
vornehmen möchten , nehmen Sie Änderungen vor und stellen dann fest, dass Ihre Benutzer den altensystem.css
mit Ihrem neuen Inhalt im Cache haben. Dies bedeutet, dass Sie den Code ändern müssen, um eine etwas andere URL zu erhalten (oder Ihre Cache-Zeit und zu reduzieren den Benutzer öfter herunterladen lassen)Wenn Sie die JHTML-Methode verwenden, wenn die Vorlage generiert wird, können Sie eine "Version" der CSS / JS-Datei generieren (Dateizeit ist gut zu verwenden oder Git-Commit-ID usw.), sodass das Ändern des Inhalts sofort das neue CSS ergibt Alle Personen, die Ihre Website anzeigen möchten. Lange Cache-Zeiten + sofortige Neuerstellung bedeuten weniger Downloads pro Seite.
Codebeispiel (NICHT TESTED WORKING, obwohl ich ähnlichen Code verwende)
Dieser Code muss für Ihr System angepasst werden, um sicherzustellen, dass die Pfade korrekt gefunden werden
quelle
Joomla stellt eine eigene API aus der Factory zur Verfügung, die wir als JFactory bezeichnen können.
Es schadet nicht, Folgendes zu verwenden:
Über:
Wenn Sie jedoch Ihre Stylesheets mit der obigen Methode einschließen, wird sie
<head>
automatisch mit in den Abschnitt Ihrer Vorlage aufgenommen<jdoc:include type="head" />
. Wenn wir eine eigene Erweiterung entwickeln und Sie ausdrücklich Ihr eigenes CSS oder Javascript haben möchten, können Sie dies mit der oben beschriebenen Methode deklarieren. Es wird erneut in Ihren<head>
Abschnitt eingefügt, sodass Sie die Vorlagen nicht aktualisieren müssenindex.php
Manchmal möchten Sie, dass Ihre Skripte am Ende Ihres Körpers angezeigt werden, damit alle DOM-Elemente geladen werden. In dieser Situation möchten Sie möglicherweise Ihre Skripte am Ende Ihres
<body>
Elements wie folgt einfügen:Sie erhalten außerdem zusätzliche Kontrolle über den Umgang mit CSS und Skripten, z. B. können Sie Skripte und Stylesheets programmgesteuert deaktivieren, wenn sie nicht benötigt werden.
quelle
JFactory
das Stylesheet eingefügt<jdoc:include type="head" />
wird. Meine Fragen sind, warum Sie es in einer Vorlage verwenden sollten, wenn Sie die<link ...>
Zeile einfach selbst schreiben können.<link...>
in Vorlage zu verwenden. Aber jedes Framework / CMS hat seine eigene Implementierungsmethode. Joomla ist keine Ausnahme. Es ist eine Joomla-Methode zum Rendern von Skripten und Stylesheets. Soweit es keine Möglichkeit gibt, Vorlagen zu überschreiben, können wir uns immer noch auf alte<link...>
Markups verlassen.Die Verwendung der "addXxxxx" -Methoden zum Laden von Stylesheets und Javascripts bietet einige zusätzliche Vorteile.
Sie können Erweiterungen installieren, mit denen diese Dateien zusammengefügt und zu einer einzigen Datei zusammengefasst werden, wodurch die Seitengeschwindigkeit verbessert wird (indem HTTP-Anforderungen und Dateigrößen reduziert werden).
Sie können sie auch in Vorlagen- und Layoutüberschreibungen verwenden, um sicherzustellen, dass die erforderlichen Dateien geladen werden. Wenn für einige Ihrer Inhaltselemente beispielsweise eine bestimmte Javascript-Bibliothek erforderlich ist (z. B. eine Bibliothek zum Ausführen von Fotos im Masonary-Stil), können Sie ein bestimmtes Layout für die Artikeltypen erstellen, die diesen Mechanismus zum Laden der js-Bibliothek verwenden und Stylesheets, die für diese Art von Displays spezifisch sind. Dies bedeutet, dass nur den Seiten, die es benötigen, zusätzliches Gewicht hinzugefügt wird, die Versionsinformationen jedoch an einem Ort bleiben, sodass durch eine Bearbeitung mehrere Seitenanzeigen geändert werden, anstatt mehrere Änderungen vornehmen zu müssen, wenn sich die Dinge ändern (und wir alle wissen, dass sie sich ändern) wird sich ändern).
Persönlich halte ich diese Vorteile sowie die Möglichkeit, diese Dateien bei Bedarf mit unterschiedlichen Kopien zu überschreiben, für ausreichend, um sie zu meiner bevorzugten Art des Hinzufügens zu machen.
quelle
Wenn Sie
<link >
Ihren Joomla-Kopf verwenden, ist er nicht aufgeräumt, da er<link >
unter dem Javascript-Block<jdoc:include type="head" />
angezeigt wird. Outsite und Joomla kehren wieder zum Ordner CSS zurück. Dies wirkt sich auf die Leistung von Joomla aus. Und wenn Sie verwenden, erhalten<link >
Sie viele variable Echo in plain index.php :(Ich benutze,
$doc->addStyleSheet
weil das.css
auf CSS-Block im Inneren angezeigt wird<jdoc:include type="head" />
. das gleiche für die Verwendung von Javascript$doc->addScript
. Nach<jdoc:include type="head" />
Joomla wird alles fertig sein und wichtigere Arbeiten erledigen. :) :)Einige Leute verwenden
<link >
für nicht unterstützte Browser wie zes wird am unteren Rand von angezeigt
<jdoc:include type="head" />
.quelle
<link>
Tag danach angezeigt wird<jdoc:include type="head" />
, dies geschieht jedoch nur, wenn Sie den Code danach hinzufügen. Wenn Sie es vorher hinzufügen, wird es vorher angezeigt. In Bezug auf das Echo von PHP-Variablen in der index.php habe ich keine Ahnung, was Sie meinen, wenn Sie dies sagen. Die Verwendung von<link>
Tags ist grundlegendes HTML und Joomla ändert nichts an der Funktionsweise