Jump to content

Ayuda. Solo tener el último producto añadido en el carrito y borrar los anteriores. Prestashop 1.7


Recommended Posts

Hola muy buenas tardes, a ver si nos podéis ayudar.

 

Necesitamos que al añadir un producto vaya a la página del carrito (esto ya lo hace) pero debería borrar los anteriores productos y dejar solo ese.

 

y por ejemplo si vamos atrás y añadimos otro producto, debería salir solo ese en el carrito y tendría que borrar el anterior.

 

En definitiva, que cada vez que entrara en la página del carrito borrara todo lo que haya y añada el último que se ha seleccionado.

 

Creéis que se puede realizar?

 

También necesitaría limitar el máximo de productos a 1. (solo un producto por pedido).

 

Muchísimas gracias.

Link to comment
Share on other sites

Hola [email protected]

 

Me alegra que ya "más o menos" hayas conseguido dar con la solución.

De todos modos, te comento lo que yo haría para que termines de pulirlo.

 

Tenemos en el controlador del carrito de compra el método responsable de eliminar los productos:

processDeleteProductInCart()

 

Deberías hacer una llamada a este cada vez que se añada un nuevo producto al carrito, justo al principio. De esta forma se limpiaría lo que hay en el carro antes de añadir nuevos productos.

 

Y en cuanto a limitar a 1 producto cada pedido, es sencillo. Ve a la template y deja el input con value=1 y disabled.

 

Espero haber terminado de aclarar las pocas dudas que te quedasen.
Si está todo claro, por favor edita el tema y ponlo como solucionado.

Link to comment
Share on other sites

Hola muchísimas gracias por la respuesta.

He estado probando y no me funciona.

 

Lo añado justo aquí, en el CartController.php: 

 

  if ($this->context->cookie->exists() && !$this->errors && !($this->context->customer->isLogged() && !$this->isTokenValid())) {

            if (Tools::getIsset('add') || Tools::getIsset('update')) {
$this->processDeleteProductInCart();
                $this->processChangeProductInCart();
            }
 
La cosa es que si añado el mismo producto, si que no lo suma. Pero si añado otro si que lo suma.
 
El enlace que hace añadir el producto es:
 
/carrito?add=1&id_product=8&id_product_attribute=0&token=29f59ba555c8f3900bda64e687e61fa2
 
 
Lo que hice yo inicialmente fue añadir un parámetro antes:
/carrito?deleteAll=1?add=1&id_product=8&id_product_attribute=0&token=29f59ba555c8f3900bda64e687e61fa2
 
 
Y en el cartController cree otra opción:
} elseif (Tools::getIsset('delete')) {
                $this->processDeleteProductInCart();
            } elseif (Tools::getIsset('deleteAll')) {
$this->context->cart->delete();
$this->context->cookie->id_cart = 0;
$this->processChangeProductInCart();
}

 

 

Que teóricamente vacía todo el carrito y la cookie y añade lo que le enviaba después por parámetro. El problema es que debe haber algún fallo en algo, porque si voy atrás y añado otro, lo añade bien y borra el anterior, pero al ir a tramitar el pedido, "peta" y vuelve a la home. 

 

Tienes alguna idea?

 

Muchas gracias!

Link to comment
Share on other sites

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