Jump to content

[RESOLU] - Problème de cache smarty sur block userinfo depuis maj 1.5.6.2


Recommended Posts

Bonjour,

 

Depuis la mise à jour de la 1.5.3 en 1.5.6.2 le bloc userinfo affiché en haut de page agit de manière très spéciale ...

Si je vide le cache smarty le bloc est mis en cache dès qu'un utilisateur se connecte.
Puis tous les autres qui arrivent et se connectent voit le nom du premier.

 

En gros le cache de ce bloc ne tient pas compte de la session utilisateur et affiche la même chose pour tous les utilisateurs connectés !

Assez embêtant ...

Du coup la boutique tourne avec le cache smarty désactivé.

 

La team Presta, une idée ? Le bug est connu ?

 

Merci.

a+

Edited by Pascal - Netenvie (see edit history)
Link to comment
Share on other sites

Bonjour,

 

Merci pour le retour.

Le theme utilisé est PRS040099.

 

J'ai vidé le cache smarty pour un autre problème et cela ne semble plus se produire.

J'avais pourtant testé ça à plusieurs reprises sans effet ... bizarre et pas sur que ça soit 100% réglé.

Edited by Pascal - Netenvie (see edit history)
Link to comment
Share on other sites

Bonjour

 

J'ai le même problème sur une 1.5.6.1. Thème de base légèrement modifié.

 

J'affiche le nom de l'utilisateur en cours avec

{if $logged}<span>Bonjour {$customerName}</span>{/if}

Mais c'est le nom de la dernière personne connecté qui s'affiche. Et ça met le souk dans les sessions. Seul "mon compte" est bon..

 

Une idée de pourquoi ça beug ?

 

Merci d'avance

Link to comment
Share on other sites

Hello,

 

J'ai du mal à comprendre car ce module n'est pas mis en cache https://github.com/PrestaShop/PrestaShop/blob/1.6/modules/blockuserinfo/blockuserinfo.php#L57 Il ne se trouve pas dans cache/smarty/cache.

 

Êtes vous sur que c'est le template de blockuserinfo ? Il y a eu plusieurs track la dessus par exemple http://forge.prestashop.com/browse/PSCFV-9543 ou

 

Cordialement

Link to comment
Share on other sites

Bonjour

 

Non je n'utilise pas le bloc userinfo mais je récupère mes variables comme ceci :

{if $logged}<span>Bonjour {$customerName}</span>{/if}
<a href="{$base_dir}commande-rapide">Mon panier</a>
{if $logged}
	<a href="{$base_dir}mon-compte">Mon compte</a>
	<a href="{$base_dir}?mylogout=" rel="nofollow">Déconnexion</a>
{else}
	<a href="{$base_dir}mon-compte">Se connecter</a>
{/if}

Le {$customerName} et l'ajout d'un produit à un panier bug avec le cache actif. Ça garde les informations de la dernière personne connectée..

 

En désactivant le cache, tout rentre dans l'ordre.

Link to comment
Share on other sites

  • 10 months later...

Pour que cela fonctionnne il faut remplacer :

 

return $this->display(__FILE__, 'blockpermanentlinks-header.tpl', $this->getCacheId('blockpermanentlinks-header'));

par

return $this->display(__FILE__, 'blockpermanentlinks-header.tpl', $this->getCacheId('blockpermanentlinks-header') . $this->context->customer->id);

 

Dans la fonction hook du module concerné.

Et bien sur blockpermanentlinks est à remplacer par le nom de votre module

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

Bonjour Pascal,

 

De ce que je comprends, ca implique la modification d'un fichier du module et donc à la prochaine mise à jour , la modification sera supprimé? N'est ce pas?

 

 

"Dans la fonction hook du module concerné" :  qu'entendez vous par là? C'est bien un fichier php du module en question, dont on parle pour la modif ?

 

"Et bien sur blockpermanentlinks est à remplacer par le nom de votre module" : pouvez vous me donner un peu plus de précisions?

 

 

Merci encore pour votre aide

Link to comment
Share on other sites

Bonjour,

 

Le fichier à modifier est le fichier php du module.

Par exemple dans ce cas le fichier blockpermanentlinks.php.

 

La fonction hook est celle qui affiche le module dans la position par exemple dans ce cas :

public function hookTop($params) {
   ...
return $this->display(__FILE__, 'blockpermanentlinks-header.tpl', $this->getCacheId('blockpermanentlinks-header') . $this->context->customer->id);
    }

Et oui malheureusement il n'y a pas de système de surcharge officiel pour le code php des modules donc il faudra restaurer la modification après MAJ.

 

Si la modification concerne un autre module et bien tout s'applique de la même manière sauf que le nom change (bien sûr).

Edited by Pascal - Netenvie (see edit history)
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...