Cambiar número unidades a añadir al carrito en el listado de productos
En esta ocasión vamos a ver como modificar la cantidad que va al carrito al pulsar sobre el botón de añadir en el listado de productos.

En el artículo anterior Multiplicar por N unidades, cada vez que añades un producto al carrito, vimos como modificar las cantidades a añadir al carrito en la vista del producto.
En esta ocasión vamos a ver como modificar la cantidad que va al carrito al pulsar sobre el botón de añadir en el listado de productos.
Nos vamos a product-list.tpl y donde se inicia el bucle para generar el listado de productos.
{foreach from=$products item=product name=products}
Añadimos las siguientes líneas.
{foreach from=$product.features item=feature}
{if $feature.name=='Multiplo'}
{assign var=multiplo value=$feature.value}
{else}
{assign var=multiplo value=1}
{/if}
{/foreach}
Múltiplo indicará la cantidad a añadir en el carrito una vez que pulses en el botón de añadir, si no tienes muy claro que es múltiplo pásate por el artículo anterior.
Luego tenemos que localizar la línea que genera el botón de añadir.
<a class="button ajax_add_to_cart_button exclusive" title="{l s='Add to cart'}" href="{$base_dir}cart.php?add=&id_product={$product.id_product|intval}&token={$static_token}" rel="ajax_id_product_{$product.id_product|intval}">
{l s='Add to cart'}
</a>
Y le añadimos un atributo llamado cantidad con el valor de múltiplo, para luego capturarlo, quedando de la siguiente forma.
<a class="button ajax_add_to_cart_button exclusive" title="{l s='Add to cart'}" href="{$base_dir}cart.php?add=&id_product={$product.id_product|intval}&token={$static_token}" rel="ajax_id_product_{$product.id_product|intval}">
{l s='Add to cart'}
</a>
Y ya en último lugar nos vamos al módulo que captura el clic en el botón. Nos vamos al módulo blockcart, como ya os he comentado en otras ocasiones, dicho módulo lo tengo dentro del tema para no mezclar churros con meninas. Abrimos el fichero ajax-cart.js, en él veremos la función overrideButtonsInThePage y el evento que captura el clic.
$('.ajax_add_to_cart_button').unbind('click').click(function(){
var idProduct = $(this).attr('rel').replace('ajax_id_product_', '');
ajaxCart.add(idProduct, null, false, this);
return false;
});
Añadimos la variable cantidad que captura el atributo cantidad y añadimos también la cantidad a la función ajaxCart.add para que envíe su valor.
$('.ajax_add_to_cart_button').unbind('click').click(function(){
var idProduct = $(this).attr('rel').replace('ajax_id_product_', '');
var cantidad = $(this).attr('cantidad');
ajaxCart.add(idProduct, null, false, this,cantidad);
return false;
});
Y con estos sencillos paso, ya podríamos enviar al carrito, las unidades de productos según necesidades del proyecto. Cualquier comentario es bien recibido…