Selon la page wiki Ajout de Javascript et CSS à la page , vous pouvez ajouter une feuille de style avec addStyleSheet
ceci:
$document = JFactory::getDocument();
$document->addStyleSheet($url);
Ou avec JHtml::stylesheet
comme ça:
JHtml::stylesheet($url, array(), true);
Mais la page wiki Création d'un modèle de base demande à l'apprenant d'inclure des feuilles de style comme ceci:
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/system/css/system.css">
</head>
Cela contourne addStyleSheet
et JHtml::stylesheet
. Est-ce une bonne idée? Quand utiliseriez-vous le premier et quand utiliseriez-vous le second?
Remarque: JHtml::_("script", …)
et JHtml::_("stylesheet", …)
sont presque exactement les mêmes que JHtml::script
et JHtml::stylesheet
. Voir ce qui JHtml::_
fait .
Réponses:
JHtml
est normalement utilisé dans les extensions car cela signifie que des remplacements peuvent être effectués, ce qui est une très bonne fonctionnalité si vous êtes développeur. Il s'étend également$document->...
en ajoutant des fonctionnalités supplémentaires.Voici un exemple:
Lors de l' utilisation
JHtml
, la minified version du script sera chargé de réduire les temps de chargement page. Lorsque vous activez le mode débogage dans la configuration globale, il charge la version non réduite du fichier pour la rendre lisible.Vous ne pouvez pas remplacer un modèle de la même manière que pour les extensions, donc beaucoup de modèles utilisent
<link>
car tout remplacement peut simplement être effectué en ajoutant uncustom.css
fichier, puis en y ajoutant votre code. Ainsi, l'utilisation des<link>
balises natives est plus rapide que l'utilisation de l'API Joomla pour charger le fichier CSSla source
JHtml
un modèle est donc d'obtenir une minification?<link ...>
écriviez jamais le code directement.En plus des autres, le plus gros avantage que j'ai trouvé est que tous les fichiers CSS / JSS sont dans le même tableau en une seule fois.
Cela peut ne pas ressembler à un avantage, mais à un extrait d'un autre exemple
Plus tard, lorsque vous souhaitez modifier
system.css
, vous apporterez des modifications, puis vous réaliserez que vos utilisateurs ont l'anciensystem.css
dans leur cache avec votre nouveau contenu, ce qui signifie que vous devrez changer le code pour qu'il soit une URL légèrement différente (ou réduire le temps de cache et faire en sorte que l'utilisateur télécharge plus souvent)Lorsque vous utilisez la méthode JHTML lors de la génération du modèle, vous pouvez ensuite générer une "version" du fichier CSS / JS (filemtime est une bonne option à utiliser, ou git commit ID, etc.), donc changer le contenu donne instantanément le nouveau css à toutes les personnes pour voir votre site. Temps de cache longs + régénération instantanée signifie moins de téléchargements par page.
Exemple de code (PAS TESTÉ DE TRAVAIL, bien que j'utilise un code similaire)
Ce code devra être modifié pour que votre système s'assure que les chemins sont trouvés correctement
la source
Joomla fournit sa propre API à partir de leur usine, nous pouvons l'appeler JFactory.
Il n'y a aucun mal à utiliser:
plus de:
Cependant, si vous incluez vos feuilles de style avec la méthode ci-dessus, elles seront
<head>
automatiquement incluses dans la section de votre modèle avec<jdoc:include type="head" />
. Pour aller plus loin, si nous développons notre propre extension et si vous souhaitez explicitement avoir votre propre CSS ou Javascript, vous pouvez le déclarer avec la méthode ci-dessus. Il l'ajoutera à nouveau dans votre<head>
section et vous évitera de mettre à jour votre modèleindex.php
Parfois, vous voulez que vos scripts apparaissent à la fin de votre corps pour charger tous les éléments DOM. Dans cette situation, vous souhaiterez peut-être inclure vos scripts à la fin de votre
<body>
élément avec les éléments suivants:Vous obtiendrez également un contrôle supplémentaire pour la gestion des CSS et des scripts, par exemple, vous pouvez désactiver les scripts et les feuilles de style par programme si vous n'en avez pas besoin.
la source
JFactory
place la feuille de style<jdoc:include type="head" />
, mes questions sont pourquoi se soucier de l'utiliser dans un modèle lorsque vous pouvez simplement écrire la<link ...>
ligne vous-même?<link...>
dans le modèle. Mais chaque framework / CMS a sa propre manière d'implémentation. Joomla ne fait pas exception. C'est une façon Joomla de rendre les scripts et les feuilles de style. Dans la mesure où il n'existe aucun moyen de remplacer le modèle, nous pouvons toujours compter sur l'ancien<link...>
balisage.Il y a quelques avantages supplémentaires à utiliser les méthodes "addXxxxx" pour charger des feuilles de style et des javascripts.
Il existe des extensions que vous pouvez installer qui rassembleront ces fichiers et les compresseront en un seul fichier, améliorant ainsi la vitesse de la page (en réduisant les requêtes http et la taille des fichiers).
En outre, vous pouvez les utiliser dans les remplacements de modèle et de mise en page pour garantir le chargement des fichiers requis. Par exemple, si quelques-uns de vos éléments de contenu nécessitent une bibliothèque javascript spécifique (comme une bibliothèque pour faire une analyse de photos de style maçonnique), vous pouvez créer une mise en page spécifique pour les types d'articles qui utiliseront ce mécanisme pour charger la bibliothèque js et des feuilles de style spécifiques à ces types d'affichages. Cela signifie qu'un poids supplémentaire n'est ajouté qu'aux pages qui en ont besoin, mais conserve toujours les informations de version en un seul endroit, donc une modification modifiera plusieurs affichages de page, plutôt que d'avoir à apporter plusieurs modifications lorsque les choses changent (et nous savons tous qu'elles va changer).
Personnellement, je considère que ces avantages, ainsi que la possibilité de remplacer ces fichiers avec des copies différentes lorsque cela est nécessaire, sont suffisants pour en faire ma façon préférée de les ajouter.
la source
si vous utilisez
<link >
votre tête joomla ne sera pas bien rangé car le<link >
sera affiché sous le bloc javascript, outsite<jdoc:include type="head" />
et joomla reviendront à nouveau dans le dossier css. Cela affectera les performances de joomla. Et si vous utilisez,<link >
vous obtiendrez de nombreux échos variables dans plain index.php :(J'utilise
$doc->addStyleSheet
parce que le.css
sera affiché sur le bloc css, à l'intérieur<jdoc:include type="head" />
. de même pour une utilisation javascript$doc->addScript
. Après<jdoc:include type="head" />
joomla assumera tout fini et fera un travail plus important. :)Certaines personnes utilisent
<link >
un navigateur non compatible comme par exempleil sera affiché en bas de
<jdoc:include type="head" />
.la source
<link>
balise apparaîtra après<jdoc:include type="head" />
, mais cela ne se produit que si vous ajoutez le code après. Si vous l'ajoutez avant, il apparaîtra avant. En ce qui concerne l'écho des variables PHP dans l'index.php, je n'ai aucune idée de ce que vous voulez dire lorsque vous dites cela. L'utilisation de<link>
balises est du HTML de base et Joomla ne change pas la façon dont cela fonctionne