En ocasiones después de actualizar, al realizar un cambio en la plantilla, o por alguna razón que no tenemos localizado, ha dejado de funcionar correctamente el añadir al carrito en PrestaShop.
Este fallo lo encontramos cuando le damos, hacemos clic al botón de añadir un producto al carrito no se actualiza la cantidad de productos en el carrito y debemos actualizar/refrescar la pagina
Bueno parece que por fin se ha encontrado una solución a este problema
Hoy me ha venido un cliente con este problema, y como siempre se hace todo lo leído y probado
- Que si desactivar AJAX -> a veces funciona
- Que desactivar google analytics -> SE llenan los cookies y da error
- Que si actualizar, error en la plantilla, etc…
Y nada sigue fallando…
Bueno pues se me ha ocurrido leer el fichero ps_shoppingcart.js del modulo de ps_shoppingcart
Ese código de ese fichero por alguna razón NO lo lee y no lo carga, por lo tanto el código que añade el producto, actualiza el carrito y muestra el popup de producto añadido NO funciona
Que es lo que se debe hacer.
Pues nos vamos a la plantilla, a la carpeta de js y en el custom.js añadimos el código del fichero del modulo que no funciona
Solucionado por fin funciona, por que ocurre? ni idea, es un problema del modulo? raro tenia el mismo que classic, la plantilla no carga el jquery correctamente, donde toca, la versión o cualquier otra cosa, y hace que falle. solucionado y a otra cosa.
Recordad, eliminar y regenerar cache
El código es este y el fichero en mi caso /httpdocs/themes/xxxxx/assets/js/custom.js :
$(document).ready(function () {
prestashop.blockcart = prestashop.blockcart || {};
var showModal = prestashop.blockcart.showModal || function (modal) {
var $body = $('body');
$body.append(modal);
$body.one('click', '#blockcart-modal', function (event) {
if (event.target.id === 'blockcart-modal') {
$(event.target).remove();
}
});
};
$(document).ready(function () {
prestashop.on(
'updateCart',
function (event) {
var refreshURL = $('.blockcart').data('refresh-url');
var requestData = {};
if (event && event.reason) {
requestData = {
id_product_attribute: event.reason.idProductAttribute,
id_product: event.reason.idProduct,
action: event.reason.linkAction
};
}
$.post(refreshURL, requestData).then(function (resp) {
$('.blockcart').replaceWith($(resp.preview).find('.blockcart'));
if (resp.modal) {
showModal(resp.modal);
}
}).fail(function (resp) {
prestashop.emit('handleError', {eventType: 'updateShoppingCart', resp: resp});
});
}
);
});
});