Jump to content

Problème avec la quantité et panier ajax


Recommended Posts

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 ?

  • Like 1
Link to comment
Share on other sites

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

  • 11 months later...

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