Tibo51 Posted May 28, 2010 Share Posted May 28, 2010 Bonjour,J'aurai besoin de modifier le comportement du bouton ajouter au panier dans la liste des produits, en particulier le choix du produit par défaut qui est automatiquement ajouté au panier.Pour comprendre où je veux en venir : Imaginons que le produit "T-shirt" a 2 attributs, le texte "I'm a boy" et le texte "I'm a gril""Im a boy" coute 10€"I'm a girl" coute 15€ (ben oui, il y a des strass ;-P )J'arrive à définir un attribut par défaut en fonction de la catégorie où je me trouve.Depuis la catégorie vêtements enfants, si je clique sur voir le produit, 1)l'attribut "I'm a girl" est présélectionné sur la page product.php. 2) Je peux choisir un autre attribut.Depuis la catégorie vêtements filles, 1) l'attribut "I'm a girl" est pré-selectionné sur la page product.php 2) c'est le seul, "I'm a boy" n'est pas affichéInversement, depuis ans vêtements garçon, c'est l'attribut "I'm a boy".Au départ, le prix affiché dans la liste des produits (category.php et product-list.tpl) restait invariablement celui de "I'm a girl".Non sans mal, j'ai réussi à afficher le bon prix de l'attribut en fonction de la catégorie dans la liste des produits.Mais maintenant je bute sur le bouton "ajouter au panier" qui prend invariablement "I'm a girl par défaut" lorsque je suis dans le liste des produits (mais pas quand je suis sur le produit lui-même)J'aimerais modifier le comportement du bouton AJAX d'ajout au panier, mais ne ne trouve pas où dans le code est définit l'ajout du produit par défaut.Quelqu'un saurait où je dois modifier cela ?merci par avance. Link to comment Share on other sites More sharing options...
Yoya Posted May 28, 2010 Share Posted May 28, 2010 Hello,celà se passe dans ajax-cart.js ajaxRequest='add&ajax=true&qty;=' + ( (quantity && quantity != null) ? quantity : '1') + '&id;_product=' + idProduct + '&token;=' + static_token + ( (parseInt(idCombination) && idCombination != null) ? '&ipa;=' + parseInt(idCombination): ''); où le paremètre 'ipa' est la 'combination' (déclinaison).J'espère que çà t'aidera un peu.A bientot, PierrE. Link to comment Share on other sites More sharing options...
Tibo51 Posted May 28, 2010 Author Share Posted May 28, 2010 Merci Pierre,Après avoir regardé le fichier dont tu parles et les lignes où ipa ou combination sont cités, je n'arrive malheureusement pas à voir e que je dois modifier.En effet, ipa fait référence à IdCombination, que l'on ne retrouve que dans les fichiers classes/Product.php et product.phppas de traces de "combination" dans classes/Category.php et category.phpd'où ma question : si IdCombination n'est pas définit (par exemple dans la page category.php, où est le code qui permet à ajax d'ajouter la déclinaison du produit où default_on =1 ?Merci par avance.Tibo Link to comment Share on other sites More sharing options...
Tibo51 Posted May 28, 2010 Author Share Posted May 28, 2010 Bon, j'ai trouvé, je vous fais partager la solutionIl fallait en fait changer la fonction getDefaultAttribute dans classes/Product.phpL'original : static public function getDefaultAttribute($id_product, $minimumQuantity = 0) { $sql = 'SELECT `id_product_attribute` FROM `'._DB_PREFIX_.'product_attribute` WHERE `default_on` = 1 '.(intval($minimumQuantity) > 0 ? 'AND `quantity` >= '.intval($minimumQuantity).' ' : '').'AND `id_product` = '.intval($id_product); $result = Db::getInstance()->getRow($sql); if (!$result) // blablabla Et la version modifiée : static public function getDefaultAttribute($id_product, $minimumQuantity = 0) { /////////////MODIFS //////////////// $sql = 'SELECT `id_product_attribute` FROM `'._DB_PREFIX_.'product_attribute` WHERE `id_category` = '.intval($id_category).' AND `default_on` = 1 '.(intval($minimumQuantity) > 0 ? 'AND `quantity` >= '.intval($minimumQuantity).' ' : '').'AND `id_product` = '.intval($id_product); $result = Db::getInstance()->getRow($sql); if (!$result) // blablabla C'est pas 100% fonctionnel pour une administration via le back-office (je passe en direct sur la base via mon ERP)Pour y arriver, j'ai ajouté un champ 'id_category' dans la table ps_product_attribute. 1) Le back-office ne permet pas de renseigner la catégorie pour la déclinaison2) J'ai parfois 2 fois le même nom de déclinaison pour un même produit (ex : taille XL, id_category= 9 et taille XL, id_category = 12) et là le back office créer une allerte si je tente de modifier l'une des déclinaisons.Il y a aussi le fait que taille XL,id_category = 9 et taille XL_id_category = 12 sont considérés comme des déclinaisons différentes, le stock de t-shirts XL n'est pas partagé : si j'ai 25 dans chaque et que j'ai fait 25 ventes depuis la catégorie 12, lorsque je commande un 26e tshirt depuis la même catégorie, il me dit que le stock est à zéro.Pour moi, c'est ce que je cherchai dons pas de problème, mais pour d'autres qui seraient tentés c'est à savoir.Tibo 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