56 minutes ago, Eolia said:Maintenant, rien n'empêche dans votre catégorie de cartes VIP de préciser que s'ils sont connectés et qu'il l'ajoutent au panier ils bénéficieront directement des remises associées.
C'est ce que je fais du coup, le problème est maintenant que :
J'ai une variable que j'assigne à smarty dans un hook personnel qui est $message qui vaut : "Vous avez ajouté la carte élite dans votre panier. Pour pouvoir bénéficier de ses avantages, veuillez créer un compte et vous connecter avant de passer la commande."
Cependant, j'aimerais qu'à chaque changement de panier, le hook actionCartSave appel mon hook afin d'assigner ma variable $message à mon message ou null.
C'est donc ce que je fais :
public function hookActionCartSave() { $this->hookDisplayMessageCart(); $this->updatePriceElite(); }
public function hookActionCartSave() { $this->hookDisplayMessageCart(); $this->updatePriceElite(); }
Le problème est que :
- si j'actualise la page, mon hook est bien pris en compte
- si je supprime seulement la carte Elite de mon panier sans refresh la page, le hook actionCartSave se lance bien mais il ne rappel pas mon hook personnel.
J'espère que je suis clair, même moi je me perds 😅
En gros voila mon code :
public function hookDisplayMessageCart() { $context = Context::getContext(); $id_product_elite_card = '5'; $cart = new Cart($context->cart->id); $cartProducts = $cart->getProducts(); $id_customer = $cart->id_customer; $message = "Vous avez ajouté la carte élite dans votre panier. Pour pouvoir bénéficier de ses avantages, veuillez créer un compte et vous connecter avant de passer la commande."; foreach ($cartProducts as $cartProduct){ if ($id_customer == 0 && $cartProduct["id_product"] === $id_product_elite_card) { $this->context->smarty->assign(['message' => $message]); return $this->context->smarty->fetch($this->local_path.'views/templates/front/cartMessage.tpl'); } } return false; }