El carrito de PrestaShop no se actualiza: problemas de caché, JavaScript y conflictos entre módulos

Pregunta publicada Respuesta publicada 1241 vistas

Si el carrito de PrestaShop no se actualiza, el botón no reacciona, gira sin fin o muestra un total incorrecto, la causa casi siempre es una de tres: un error de JavaScript, una caché obsoleta o un conflicto de módulos. Revíselas en ese orden.

Back office de PrestaShop, Advanced Parameters > Performance, pantalla de ajustes de caché y CCC.
Los problemas de actualización del carrito suelen empezar revisando caché, optimización JavaScript o conflictos de módulos.

Empiece en el navegador

«Añadir al carrito» es una petición AJAX, así que abra las herramientas de desarrollo (F12). En la pestaña Console, recargue la ficha de producto y busque errores en rojo como $ is not defined o un SyntaxError, un solo script roto (a menudo de un módulo) detiene todo el JavaScript de la página, incluido el carrito. La ruta del archivo en el error señala al módulo culpable; desactívelo para confirmarlo.

Si el botón gira sin terminar, pase a la pestaña Network, filtre por XHR y haga clic. La petición del carrito debe devolver estado 200 con JSON válido. 500 es error de servidor; HTML mezclado con el JSON significa que un módulo imprimió un aviso antes del JSON; 403 apunta a un módulo de seguridad o un WAF.

rm -rf var/cache/dev/* var/cache/prod/*

base='https://example.com/index.php'
curl -sS "$base?controller=cart&add=1&ajax=true&id_product=1&qty=1&token=STATIC_TOKEN" \
  -H 'X-Requested-With: XMLHttpRequest' | jq .

Vacíe cada capa de caché

Si el carrito se actualiza pero muestra cantidades o precios antiguos, una caché sirve datos obsoletos. Pruebe primero en una ventana de incógnito para descartar el navegador. Luego vacíe las carpetas de compilación y caché de Smarty en var/cache (o Parámetros avanzados > Rendimiento > Vaciar caché). Con el CCC activo, el error de sintaxis JS de un módulo puede romper todo el paquete combinado, desactive el CCC para probar. Si hay un CDN como Cloudflare delante, asegúrese de que ninguna regla «Cache Everything» cubra el endpoint del carrito; sus respuestas son específicas del cliente y no deben cachearse.

Cookies, sesiones y conflictos de módulos

Un carrito que se vacía en cada carga suele ser un problema de cookies, dominio incoherente (www o sin él), atributo SameSite o Secure incorrecto, o sesiones no compartidas entre servidores. Para encontrar un módulo en conflicto, desactive los módulos de terceros por grupos y reactívelos en bloques de cinco; preste atención a todo lo enganchado a actionCartSave, actionCartUpdate o actionFrontControllerSetMedia.

Para un diagnóstico más amplio, vea nuestra guía de resolución de problemas PrestaShop.

¿Le resultó útil esta respuesta?

¿Todavía tienes preguntas?

¿No encuentras lo que buscas? Envíanos tu pregunta y te responderemos.

Cargando...
Volver arriba