Jump to content

Fonctionnement des hooks personnels


JulienPct

Recommended Posts

Bonjour,

Simple question, j'ai créé un hook afin de pouvoir afficher un message sur la page que je souhaite mais surtout, quand je le souhaite.

J'appelle normalement ce hook depuis le hook actionCartSave afin d'afficher mon message à certains moment. Le problème est que mon hook est appelé quoi qu'il arrive. J'ai supprimé tous ses appels rien, la seule façon qu'il ne se lance pas c'est de la commenter.

Quelqu'un s'aurait m'expliquer pourquoi mon hook s'appelle tout seul ?

Link to comment
Share on other sites

4 minutes ago, Mediacom87 said:

Un hook est appeler à chaque fois il suffit de choisir dans le code de traitement du hook quand afficher ce que tu veux.

Tous les hooks sont appelés au chargement de la page ? En sois mon module marche, le problème est que, pour une raison inconnue, il casse l'Ajax du panier.

En gros mon hook affiche juste un texte si un utilisateur rentre un certains produit dans le panier. Cependant, à partir du moment où j'ajoute ce produit OU si il est dans mon panier, l'Ajax ne fonctionnera pas pour les autres ajout panier.

Par contre, dès que j'enlève ce produit de mon panier, l'Ajax marche pour tous les produits sauf ce premier.

 

Code du hook en question (PS 1.7.8) :

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. Afin de bénéficier immédiatement de ses avantages, veuillez créer un compte et vous y 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');
            }
        }
        $this->context->smarty->assign(['message' => ""]);
        return $this->context->smarty->fetch($this->local_path.'views/templates/front/cartMessage.tpl');
    }

 

Edited by JulienPct (see edit history)
Link to comment
Share on other sites

2 minutes ago, Mediacom87 said:

Heu vous essayez d'afficher un truc dans un hook d'action.

Ne cherchez pas plus loin on ne peut afficher des trucs que sur les hook display.

Le problème est que j'ai besoin d'appeler ce hook à chaque update de panier. 

Mais sinon effectivement, si je supprime mon appel situé dans mon hook actionCartSave, mon ajax marche, mais mon message n'est logiquement plus mis à jour.

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