Novina Posted September 3, 2018 Share Posted September 3, 2018 Bonjour, Je développe actuellement un module qui doit s'afficher sur la fiche produit. En fonction des différentes caractéristiques (= des champs), j'aimerai varier le prix du produit et ajouter des précisions textuelles sur la nature de la commande (ex: le nom de la police de caractères sélectionné ou ajouté). A partir de mon module en Javascript, j'arrive à facilement intercepter la requête d'ajout au panier : prestashop.on('updateCart', function (event) { if(event.reason.linkAction !== undefined && event.reason.linkAction == "add-to-cart") { if(event.reason.idProduct != undefined) { // mon code } } } Est-ce qu'à ce moment là, je peux modifier la commande en fonction de mes propres caractéristiques ? Je sais que la modale ne s'affiche pas tout de suite, ce qui semble laisser du temps pour modifier le contenu du panier. Merci d'avance pour vos réponses. Link to comment Share on other sites More sharing options...
Eolia Posted September 3, 2018 Share Posted September 3, 2018 Si vous décidez de passer par le js vous serez obligé d'utiliser une requête ajax pour modifier le produit avant de l'ajouter au panier. Les données Prestashop sont sur le serveur en php/sql, javascript n'est que côté client. Il y a donc un moment où il faut les stocker/enregistrer. Link to comment Share on other sites More sharing options...
Novina Posted September 3, 2018 Author Share Posted September 3, 2018 (edited) Merci Eolia pour votre réponse. Je ne souhaite pas modifier le produit, seulement influer sur le panier en cours. C'est un module de personnalisation avec des calculs de surfaces, selon la dimension au m² le prix est modifié et des caractéristiques sont ajoutées (comme sources d'informations, des simples notes de commande). Ceci étant, je ne sais pas si Prestashop a déjà prévu quelque chose. Il envoi directement une requête sur le panier, ne puis-je pas modifier ces informations ? En PHP ou JS ? Si oui comment ? Je capte ça : HTTP POST /panier.php token: 6c7934357727ed8d7522bc7aabe2dde2 id_product: 55 id_customization: 0 group[15]: 60 group[14]: 55 qty: 1 add: 1 action: update Merci encore. Edited September 3, 2018 by Novina (see edit history) Link to comment Share on other sites More sharing options...
Eolia Posted September 3, 2018 Share Posted September 3, 2018 c'est bien ce que je dis... Prestashop n'envoie aucune info sur le prix en js. Par contre vous pouvez créer votre personnalisation à la volée (id_customization) avec son prix, mais ca c'est uniquement en php. Link to comment Share on other sites More sharing options...
Novina Posted September 4, 2018 Author Share Posted September 4, 2018 J'ai réussi à ajouter un produit à mon panier côté PHP : /* Données */ $id_product = (int)Tools::getValue('id_product'); $id_customization = (int)Tools::getValue('id_customization'); // = 0 $price_product = (int)Tools::getValue('priceform'); // nouveau prix /* Créer le panier */ if(!$this->context->cart->id) { /* Identifier l'utilisateur connecté */ if($this->context->cookie->id_guest) { $guest = new Guest($this->context->cookie->id_guest); $this->context->cart->mobile_theme = $guest->mobile_theme; } $this->context->cart->add(); /* Créer le cookie */ if($this->context->cart->id) { $this->context->cookie->id_cart = (int)$this->context->cart->id; } } /* Sélectionner le panier */ $cart = $this->context->cart; /* Sélectionner le produit */ $product = new Product($id_product, true, (int)($this->context->cookie->id_lang)); $id_product_attribute = Product::getDefaultAttribute($id_product); /* Ajouter au panier */ $cart->updateQty(1, $id_product, $id_product_attribute, $id_customization); Quelle méthode dois-je utiliser pour modifier le prix ? et ajouter un champ personnalisé (j'ai pas bien compris la méthode "addTextFieldToProduct") ? Merci d'avance. Link to comment Share on other sites More sharing options...
Novina Posted September 10, 2018 Author Share Posted September 10, 2018 (edited) Re-up. Est-ce que quelqu'un pourrait m'aider ou m'orienter vers une solution ? Je souhaite seulement avec mon module ajouter au panier, une version modifié d'un produit déjà en base : - Un prix modifié. - Des déclinaisons choisies (je récupère les données $_GET['group[X]'] de mon formulaire). - Des informations complémentaires au format chaîne de caractères (taille, choix d'une police, etc). Il faudrait que j'arrive à compléter le code avec les bonnes instructions (voir le message précèdent). Merci d'avance pour vos réponses. Edited September 10, 2018 by Novina (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now