Rwkzejedi Posted September 14, 2011 Share Posted September 14, 2011 Bonjour, J'ai voulu apporter une modification au module "homefeatured", permettant de modifier la quantité. En effet, actuellement, ce module n'affiche qu'un bouton nous permettant d'ajouter un produit 1 fois à notre panier. J'ai fais donc les rajouts suivants : 1) Un input text avec un événement keyup modifiant l'url. 2) Un jquery permettant de modifier dynamiquement ladite url Lorsque j'appuie sur mon bouton, peu importe la quantité mise : elle est prise pour "1" (que je mette 0 ou 100). 1 seul produit est ajouté et ce aussi bien dans le petit module récapitulatif du panier (qui se met donc à jour automatiquement) que dans la page panier. Si je fais click droit sur mon bouton "copier l'adresse du lien" et que je la colle dans la barre d'adresse de mon navigateur : la quantité est bien prise en compte (10, 8 , 250...) Si je vais dans mon administration et que je configure le module panier en retirant le panier en ajax... lorsque je click sur mon bouton, la quantité est bien celle que je renseigne. Voici mon code : <div> {if ($product.id_product_attribute == 0 OR (isset($add_prod_display) AND ($add_prod_display == 1))) AND $product.available_for_order AND !isset($restricted_country_mode) AND $product.minimal_quantity == 1 AND $product.customizable != 2 AND !$PS_CATALOG_MODE} {if ($product.quantity > 0 OR $product.allow_oosp)} <input type="text" id="quantity_wanted" class="text" value="{if $product.minimal_quantity > 1}{$product.minimal_quantity}{else}1{/if}" size="2" maxlength="3" /> <a id="addtocart" class="button_large ajax_add_to_cart_button" rel="ajax_id_product_{$product.id_product}" href="{$link->getPageLink('cart.php')}?qty=1&id_product={$product.id_product}&token={$static_token}&add" title="{l s='Add to cart' mod='homefeatured'}">Ajouter au panier</a> <script type="text/javascript" charset="utf-8"> {literal} $(function(){ $('#quantity_wanted').keyup(function(){ var qty = $('#quantity_wanted').val(); var href="{/literal}{$link->getPageLink('cart.php')}{literal}?qty="+qty+"&id_product={/literal}{$product.id_product}{literal}&token={/literal}{$static_token}{literal}&add"; $('#addtocart').attr('href',href); }); }); {/literal} </script> {else} Produit indisponible {/if} {else} <div style="height:23px;"></div> {/if} </div> J'ai regardé dans le fichier cartController et j'ai vu que PS récupére la quantité avec Tools:getValue('qty',1)... Ce qui selon la fonction récupère soit la valeur de qty, soit la fixe à 1... Cette fonction capte pourtant bien les valeurs adressées en POST ou en GET ... Donc, je ne comprends pas. Un peu d'aide ? 1 Link to comment Share on other sites More sharing options...
Rwkzejedi Posted September 14, 2011 Author Share Posted September 14, 2011 J'ai trouvé une piste. Dans cart.js, il y a une fonction qui override tous les boutons ajax. Et cet override, ne prend pas en compte les quantités ... overrideButtonsInThePage : function(){ //for every 'add' buttons... $('.ajax_add_to_cart_button').unbind('click').click(function(){ var idProduct = $(this).attr('rel').replace('ajax_id_product_', ''); if ($(this).attr('disabled') != 'disabled') ajaxCart.add(idProduct, null, false, this); return false; }); Link to comment Share on other sites More sharing options...
Rwkzejedi Posted September 14, 2011 Author Share Posted September 14, 2011 J'ai définitivement réglé mon problème. Tout venait de la classe css ".ajax_add_to_cart_button" qui était utilisée par ajax-cart.js et qui l'overridait. Il m'a juste suffit de créer une classe différente et d'utiliser ajaxCart.add(param) et hop. Link to comment Share on other sites More sharing options...
ultraxa Posted September 20, 2011 Share Posted September 20, 2011 j'ai un peu le meme soucis ... et tu va peut etre resoudre mon probleme , j'ai rajouter un bouton "ajout au panier" dans un template , ...comment as tu fait ? Link to comment Share on other sites More sharing options...
Pyssou Posted August 21, 2012 Share Posted August 21, 2012 salut, merci bcp ça m'a vraiment aidé ! Cheers 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