Jump to content

Problème de cache


sbourdon

Recommended Posts

Quelqu'un a déjà rencontré ce soucis en multi boutique?

Je l'ai eu sur le panier et l'inscription à la newsletter.

Les 2 templates sont différents c'est à dire que dans chaque répertoire theme/theme1 ou theme/theme2 /modules/ps_shoppingcart/ le fichier ps_shoppingcart.tpl  diffère.

Pris séparément les 2 thèmes affichent bien une présentation différente. Quand on passe en multiboutique et donc que chaque thème est dans le répertorie theme on a le même affichage du panier pour les 2 thèmes ... Si on vide le cache  .. on la la présentation du theme 1 ou 2 selon les actions faites ...(la boutique qu'on a chargé en premier)

Bien sur si on désactive le cache et qu'on force la compilation : les 2 thèmes ont la bonne présentation pour le panier...(pas top niveau perf)

Donc cela ressemble bien à un gros soucis dans le cache qui s'embrouille entre les 2 thèmes.

 

Link to comment
Share on other sites

Il parle du cache smarty vraisemblablement puisqu'il parle de l'option pour forcer la compilation.

Normalement le module ps_shoppingcart n'utilise pas le cache smarty justement pour éviter ce genre de soucis.

Avez vous des modifications dans le code PHP du module ps_shoppingcart comparé à celui fournit avec Prestashop ?

Avez-vous un module de cache supplémentaire ?

Utilisez vous un cache Varnish, un load balancer ou d'autres spécificités pouvant ajouter une couche de cache supplémentaire ?

Link to comment
Share on other sites

Je parle bien du cache smarty et du cache de PS.

Voir PJ de la config - rien de plus classique (que j'avais sur PS1.6 avec les même multi boutiques et qui ne posait aucun soucis).

Le theme 1 et le défaut prestashop avec quelques modifs css et tpl mais pas sur le module cart. Quant au second thème c'est un thème acheté .

Aucune modif faite sur le code php.

J'ajoute que ça le fait aussi sur le module newsletter en bas de page : block_newsletter qui s'affiche selon l'un ou l'autre des template selon l'ordre ou on a charge la boutique après vidage de cache : le premier ayant "raison".

Ca le fait aussi sur un autre site complétement différent en PS 1.7.2.4 avec idem un thème acheté (différent du site précédent) et le thème par défaut de PS légèrement modifié css et quelques tpl sur les 2 même éléments (hébergé chez ovh le premier étant chez o2switch)

 

Screenshot_2019-04-27 Performances.png

Link to comment
Share on other sites

Enfin là on n'est pas dans du détail ... :( àça touche le panier pas une fonction perdue au fin fond du site qu'on utilise qu'une fois de temps en temps...

En fouillant dans le cache smarty bien qu'ayant 2 tpl différents pour le panier je ne trouve qu'une seule version du tpl en question.

Selon que j'ai chargé le site 1 ou le site 2 j'ai dans le répertoire /var/cache/prod/smarty/compile/35/65/5e/

la version 1 ou la version 2 dans le même fichier 35655e6409b6198f29dd6e732ef9598dec599880_2.module.psshoppingcartpsshoppingc.php.

Logiquement je devrais en avoir 2 une pour le thème un l autre pour le thème 2...

Donc ou le multiboutique n'est vraiment pas fonctionnel voir pas utilisable (le panier c'est primordial dans un site e-commerce) ou il y a un soucis avec smarty ?!

Link to comment
Share on other sites

alala .... prestashop :( ...

bon je vais pas m'arracher les cheveux je vais prendre le mieux disant des 2 thèmes sur ces 2 points et fusionner pour n'avoir qu un seul tpl adapté avec le css qui à l'air lui de ne pas poser de soucis ...

Merci pour vos réponses

Link to comment
Share on other sites

Je ne sais pas si en 1.7 cela fonctionne mais vous pouvez identifier l'id boutique en l'ajoutant en class à la balise body pour différencier vos css par boutique.

Comme cela vous n'aurez qu'un seul css pour les 2 boutiques.

{if isset($cart->id_shop) && $cart->id_shop} shop-{$cart->id_shop}{/if}

 

Link to comment
Share on other sites

Dans le module ps_shoppingcart pouvez vous tenter de chercher

return $this->fetch('module:ps_shoppingcart/ps_shoppingcart.tpl');

et de remplacer par

return $this->display(__FILE__, 'ps_shoppingcart.tpl');

Une réponse intéressante : https://github.com/PrestaShop/PrestaShop/issues/9763#issuecomment-460609145

 

Edited by Janett (see edit history)
  • Like 1
Link to comment
Share on other sites

  • 6 months later...

Bonjour,

Désolé pour le temps de réponse, faute de temps j'avais mis ce sujet de coté.

En effet le  lien m'a permis d'avancer.

J'ai créé 5 overides pour les modules commun qui ont dans mes 2 thèmes des tpl différents.

Je les joints dans le zip.

Ils sont a déposer dans overides/modules. Puis bien sur de supprimer le fichier class_index.php dans /var/cache/prod (ou dev si vous e^tes en dev pour tester bien sur).

Si vous avez d'autres modules impactés il faudra créer d'autres overides ...

Bien respecter les protocoles des fct __construct() et de renderWidget qui sont parfois différents selon les modules. Pour cela il suffit de regarder dans la classe d'origine de chaque module et de bien reporter le bon fichier tpl.

Merci pour votre aide...

PS : c'est effectivement assez hallucinant que ce soucis majeur du multi boutique ne soit pas corrigé à la basse (dans les fonctions natives de PS) ... la solution n'étant pas des plus complexes à mettre en place.

modules.zip

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...