Limitar número de productos en el carrito en Prestashop

Traducción de la guía realizada por el usuario Nemo de la Comunidad de Prestashop

Limitar números de productos en el carrito en Prestashop 1.6
Limitar número de productos en el carrito en Prestashop 1.6

Según nos indica Nemo, el tutorial es para Prestashop 1.6

Imaginemos que queremos que, en el carrito, no puedan existir más de 5 productos en total.

Recordamos, que lo mejor es hacer un override de los “Clases y Controladores” que se vayan a modificar.

En el fichero:

/controllers/front/CartController.php

Dentro de la función:

processChangeProductInCart


Debajo de la línea: (En Prestashop 1.6.1.12, sobre la línea 241)

$cart_products = $this->context->cart->getProducts();

Añadimos la siguiente


$total_cart_produtcs_count=0;

Ahora un poco más abajo, donde tenemos esta línea:


foreach ($cart_products as $cart_product) {

Añadimos:


$total_cart_produtcs_count+=$cart_product['cart_quantity'];

Almacenamos en la variable total_cart_produtcs_count el número total de productos que se van añadiendo al carrito.

Ahora justo antes de este comentario:

// Check product quantity availability

Añadimos:

$max_qty = 5;
		if(Tools::getValue('op', 'up')=='up' && $mode=='add')
		{
			if (count($cart_products) == $max_qty || $total_cart_produtcs_count + $this->qty > $max_qty)
				$this->errors[] = sprintf(Tools::displayError('El limite de productos en el carrito son %s'), $max_qty);
			
		} 

  • En la variable “max_qty” indicamos el límite máximo de productos que se pueden añadir al carrito.
  • En el primero IF se chequea cuando se añade/actualiza productos al carrito.
  • En el segundo IF contamos los productos añadidos al carrito y los comparamos con el límite que hemos establecido
  • Si se cumplen los dos IF, imprimimos el mensaje de que se ha llegado al límite de productos que se pueden añadir al carrito.

Esta traducción, puede contener errores o quedar desactualizada en el momento en el que vayáis a ver este post, revisarla siempre con el tutorial de Nemo: