Inicio / Blog / Cambiar número unidades a añadir al carrito en el listado de productos

Cambiar número unidades a añadir al carrito en el listado de productos

Luis Ruiz

Escrito por Luis Ruiz el Actualizado el

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…

Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.

Cookies estrictamente necesarias

Las cookies estrictamente necesarias tiene que activarse siempre para que podamos guardar tus preferencias de ajustes de cookies.

Cookies de terceros

Esta web utiliza Google Analytics para recopilar información anónima tal como el número de visitantes del sitio, o las páginas más populares.

Dejar esta cookie activa nos permite mejorar nuestra web.