Jump to content

[résolu] Renommer global.css (pour forcer le cache navigateur client)


Recommended Posts

Bonjour,

 

Je souhaite renommer mon fichier global.css à chacune de mes modifications. global2.css, global2.1.css etc...

 

Cela permet au navigateur d'un ancien visiteur de recharger la page et d'afficher les modifications (Un internaute n'est pas censé savoir qu'il faut rafraîchir la page avec F5). Je ne veux pas passer par le htaccess sinon on perd complètement l’intérêt du cache navigateur!

 

J'aimerais savoir quels sont les fichiers à modifier qui appellent le global.css via cette ligne :




 

Merci d'avance!

Link to comment
Share on other sites

Normalement ça devrait être dans le header.tpl mais à la place j'ai ça, ce qui veut dire que la mention global.css doit se trouver dans d'autres fichiers.

{if isset($css_files)}
{foreach from=$css_files key=css_uri item=media}
<link href="{$css_uri}" rel="stylesheet" type="text/css" media="{$media}" />
{/foreach}
{/if}

Link to comment
Share on other sites

Bon on peut dire que je me sens un peu tout seul dans mon petit sujet.

 

Problème résolu (on est jamais mieux servi que par soit même ;-)

 

1. J'ai fait une recherche via l'invite de commande : findstr /s /m "\<global.css\>" c:\wamp\www\prestashop\*.* > résultat.txt

2. Dans le fichier résultat.txt j'ai trouvé les fichiers suivants :

c:\wamp\www\prestashop\classes\FrontController.php

c:\wamp\www\prestashop\js\tinymce.inc.js

c:\wamp\www\prestashop\modules\blockcustomerprivacy\blockcustomerprivacy.php

c:\wamp\www\prestahsop\modules\ebay\ebay.php

 

3. J'ai donc renommé global.css et global2.css et j'ai modifié le fichier FrontController.php en conséquence.

4. Après avoir nettoyé les fichiers compile ça marche! Mes changements sont pris en compte sans avoir à rafraichir ma page!!!

Youpi!!!!

Wouhou!

(Chui trop fort) :wub: :wub: :wub: :wub: :wub: :wub:

 

Un commentaire?

Link to comment
Share on other sites

Bon on peut dire que je me sens un peu tout seul dans mon petit sujet.

 

Problème résolu (on est jamais mieux servi que par soit même ;-)

 

1. J'ai fait une recherche via l'invite de commande : findstr /s /m "\<global.css\>" c:\wamp\www\prestashop\*.* > résultat.txt

2. Dans le fichier résultat.txt j'ai trouvé les fichiers suivants :

c:\wamp\www\prestashop\classes\FrontController.php

c:\wamp\www\prestashop\js\tinymce.inc.js

c:\wamp\www\prestashop\modules\blockcustomerprivacy\blockcustomerprivacy.php

c:\wamp\www\prestahsop\modules\ebay\ebay.php

 

3. J'ai donc renommé global.css et global2.css et j'ai modifié le fichier FrontController.php en conséquence.

4. Après avoir nettoyé les fichiers compile ça marche! Mes changements sont pris en compte sans avoir à rafraichir ma page!!!

Youpi!!!!

Wouhou!

(Chui trop fort) :wub: :wub: :wub: :wub: :wub: :wub:

 

Un commentaire?

 

Bonne solution, mais n'est-il pas possible d'avoir une génération automatique du nouveau nom du css(global2, puis global3...) ? Dans ce cas là il faudrait aussi automatiser le code dans Frontcontroller... Des pistes pour cela?

Link to comment
Share on other sites

dans le header.tpl de votre theme, vous ajoutez un point d'interrogation, et une variable version dans la suite, comme ceci:

 

<link href="{$css_uri}?version=1" rel="stylesheet" type="text/css" media="{$media}" />

 

chaque fois si vous changez la variable, cela va obliger le browser de reloader les css.

  • Like 1
Link to comment
Share on other sites

  • 1 month later...

Désolé mais j'ai pas tout compris.

Ok pour le ?version=1..2.. que je met dans header.tpl, mais en meme temps à côté il faut faire quoi dans quel fichier ?

 

Admettons que je modifie mon global.css ou un autre css comme product.css, qu'est ce que je fais ?

1- Je changer la valeur de version dans header.tpl en l'incrémentant de 1 ?

2- Je change le nom du css ?

Je touche à Frontcontroller.php ?

 

Merci d'avance, c'est vrai que c'est chiant de faire tout un tas de modifs que les clients ne voient pas au final.

Link to comment
Share on other sites

  • 1 month later...

Bonjour,

 

j'utilise cette fonction pour le css et les images. Ce qui m'offre l'avantage de ne pas avoir à renomer mes images après modification ou mes css et de ne pas à utiliser la fonction F5 pour vider le cache du navigateur. Car comme tu le sais le client ne le sais pas qu'il faut faire un F5 pour prendre en compte les modifications.

 

J'avais essayer une autre méthode qui fonctionne également c'est de renomer ma template de ce fait les changements étaient pris en compte mais il fallait me retaper les traductions de certains modules. Donc j'opte largement pour la première solutions.

 

1/ Pour que cela fonctionne il te faut activer dans Smarty.class.php la ligne PHP_TAG en TRUE


 var $security_settings  = array(
								'PHP_HANDLING'	=> false,
								'IF_FUNCS'		=> array('array', 'list',
														   'isset', 'empty',
														   'count', 'sizeof',
														   'in_array', 'is_array',
														   'true', 'false', 'null'),
								'INCLUDE_ANY'	 => false,
								'PHP_TAGS'		=> true,
								'MODIFIER_FUNCS'  => array('count'),
								'ALLOW_CONSTANTS'  => false
							   );

 

 

 

2/ Dans header.tpl de ton thème :

{php}echo ('<link href="{$css_uri}?' .time(). '" rel="stylesheet" type="text/css" media="{$media}" />');{/php}

 

3/ Pour appliquer un rafraichissement sur une image qui à tendance à être modifier fréquement :

(Je ne recommande pas de la faire systèmatiquement sur toutes les images car cela peut entrainer un ralentissement de ton site)

{php}echo ('[img={$img_dir}tonimage.png?]');{/php}

 

Peut être que certains vont désaprouvé cela car en théorie nous ne somme pas tenue de mettre du code php dans un thème prestashop. Pour ma part j'ai essayer plusieurs solutions et c'est la seul qui fonctionne. Rien de plus frustrant de faire des modifications qui ne sont même pas vu par les clients.

Link to comment
Share on other sites

  • 4 years later...

dans le header.tpl de votre theme, vous ajoutez un point d'interrogation, et une variable version dans la suite, comme ceci:

 

<link href="{$css_uri}?version=1" rel="stylesheet" type="text/css" media="{$media}" />

 

chaque fois si vous changez la variable, cela va obliger le browser de reloader les css.

 

 

Ce code n'a pas fonctionné pour moi mais peut-être il y avait une autre manip à faire ?

 

Le temps est passé (presta 1.6.1.6 ici) mais c'est le seul sujet francophone qui parle réellement de ce problème.

 

 La seule réelle solution, on est d'accord, étant de changer le nom ou la version des fichiers css, quelqu'un a-t-il résolu le problème ?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...