Jump to content

SOLUCIONADO! No puedo añadir al carrito sin refresh


Pack_12

Recommended Posts

Hola, ayer puse un post sobre temas de @media para arreglar algún tema de diseño en modo Responsive (

Es una web en Prestashop 1.7.5.2 con plantilla Warehouse (https://www.farmaciafuentelucha.com/index.php). El problema más importante es que, desde hace una semana que terminé de hacer las pruebas de pedidos con transportista y con el TPV virtual ya funcionando, al pasarla a modo producción, no se que ocurre ahora que cada vez que intento añadir un producto al carrito, si indico seguir comprando y por tanto volver a la página anterior, la página se queda como dormida, de tal forma que no funciona ningún botón para añadir un nuevo producto, o cualquier enlace del menu, o cualquier icono de esa misma pagina que pudiera redirigir a otro lado. Es como si la página se quedase dormida. La única forma de poder seguir añadiendo producto es refrescando la pagina cada vez que añado un producto, y entonces ya funciona de nuevo, pero de nuevo al decir seguir comprando me vuelve a ocurrir lo de antes, y así sucesivamente.

Me he dado cuenta de que muchos carritos tienen solo un producto. Seguramente mis clientes se está yendo al ver que no pueden volver a añadir más. ¿Que puede estar sucediendo? ¿Abre tocado algo que no debía en el apartado de Parametros avanzados -> Rendimiento? 

Muchas gracias de antemano.

Slds,

Edited by Pack_12 (see edit history)
Link to comment
Share on other sites

Hola, Pack_12.

Te puedo decir dónde está tu problema, aunque así sin más no sé exactamente por qué se produce:

Cuando añades un producto al carrito y cierras la ventana modal (con "continuar comprando"), hay un javascript en tu tema que añade la clase "-combinations-loading" a la sección "main" de tu página, que es donde se cargan los productos (<section id="main" class="-combinations-loading">). Mirando en el CSS, veo que esa clase tiene definida esta regla:

#main.-combinations-loading {
    pointer-events: none;
}

El pointer-events: none implica que esa sección no responde a los eventos del ratón (hacer click sobre los elementos, por ejemplo). Por eso no se pueden añadir más productos, aunque lo que no está incluido dentro de esa sección (menú superior, filtros laterales, footer y demás), como están fuera sí que siguen funcionando.

De todas formas, no creo que sea problema del CSS, si eso está definido así es por algo, la cuestión es que el Javascript que lo gestiona no está funcionando como debe.

Hay una cosa en la sección de parámetros avanzados -> rendimiento que puede estar causándolo, y es si tienes activada la caché de Javascript. En algunos temas esto no funciona bien y puede dar errores. Prueba a desactivarla y a borrar luego la caché. El resto de parámetros de esa sección no deberían afectarte.

Link to comment
Share on other sites

3 hours ago, Prestafan33 said:

Hola, Pack_12.

Te puedo decir dónde está tu problema, aunque así sin más no sé exactamente por qué se produce:

Cuando añades un producto al carrito y cierras la ventana modal (con "continuar comprando"), hay un javascript en tu tema que añade la clase "-combinations-loading" a la sección "main" de tu página, que es donde se cargan los productos (<section id="main" class="-combinations-loading">). Mirando en el CSS, veo que esa clase tiene definida esta regla:


#main.-combinations-loading {
    pointer-events: none;
}

El pointer-events: none implica que esa sección no responde a los eventos del ratón (hacer click sobre los elementos, por ejemplo). Por eso no se pueden añadir más productos, aunque lo que no está incluido dentro de esa sección (menú superior, filtros laterales, footer y demás), como están fuera sí que siguen funcionando.

De todas formas, no creo que sea problema del CSS, si eso está definido así es por algo, la cuestión es que el Javascript que lo gestiona no está funcionando como debe.

Hay una cosa en la sección de parámetros avanzados -> rendimiento que puede estar causándolo, y es si tienes activada la caché de Javascript. En algunos temas esto no funciona bien y puede dar errores. Prueba a desactivarla y a borrar luego la caché. El resto de parámetros de esa sección no deberían afectarte.

Hola de nuevo Prestafan33, 

Pes va a ser que tiene que ver con lo primero que dices. Probé a desactivar lo de cache de Javascript y borrar caché, parece que sigue sin arreglarse el problema. Probé en PC y en móvil y sigo teniendo el problema de que se queda dormida  tras añadir un producto y no consigo que despierte. Tenías razón, del menu si me deja seleccionar, pero tengo que arreglar esto porque si un cliente está en una página de categoria y ve que no puede añadir mas que un producto se va a ir. De hecho veo que hay carritos con un solo producto... snif snif...

Aprovecho para mostrar como tengo las opciones de Rendimiento, primero para saber si es la mejor opción, y segundo para saber si el problema puede venir de otra de las opciones.

Smarty
Compilación de plantillas = Force compilation
Caché = NO

Modo depuración
Desactivar los módulos no nativos de PrestaShop = NO 
Desactivar todos los métodos overrides = NO
Modo depuración = NO


CCC (Combinación, Compresión y Caché)
"Smart cache" para las hojas de estilo (CSS) = NO
"Smart cache" para el código de JavaScript = NO
Optimización de Apache = SÍ


Utilizar la caché = NO

 

Me temo que si se arrelga cambiando algo de aqui tendré que modiicar ese código que mencionabas, no? Es raro... porque me funcionaba todo en modo de pruebas, y ahora en producción NO! :( ...

Mil gracias

 

Link to comment
Share on other sites

Te pasa exactamente esto : He probado a añadir el código necesario a la consola y todo funcionando perfectamente

 

image.thumb.png.7952b81fe34d019d741eb1d86c3998c3.png

 

PD1: Activa y configura las URL amigables

PD2: cuando vayas a poner medicamentos necesitaras esto

https://gmartos.es/producto/farmacias-medicamentos-modulo-mostrar-informacion-legal-enlaces-pdf-prospectos/

Edited by gusman126 (see edit history)
Link to comment
Share on other sites

9 minutes ago, gusman126 said:

Te pasa exactamente esto : He probado a añadir el código necesario a la consola y todo funcionando perfectamente

 

image.thumb.png.7952b81fe34d019d741eb1d86c3998c3.png

 

PD1: Activa y configura las URL amigables

PD2: cuando vayas a poner medicamentos necesitaras esto

https://gmartos.es/producto/farmacias-medicamentos-modulo-mostrar-informacion-legal-enlaces-pdf-prospectos/

ok gusman126, uchas gracias.

Ya he hecho PD1 y PD2 en cuanto me aprueben desde sanidad y me den el logo. Llevo con ello desde hace más de un año:(

Respecto al código, ok! Pero.... ¿hay qu añadir ese código o sustituirlo entero? Me da miedo porque nunca he tocado código de los ficheros de mi plantilla. Unicamente el custom CSS que me oferce el módulo IQITTHEMEEDITOR.

Gracias,

Link to comment
Share on other sites

Si el "IQITTHEMEEDITOR." puedes añadir .js o javascript, lo añades al cuadro donde puedes escribir, el codigo de la entrada que he puesto

Si no puedes, simplemente busca el custom.js dentro de la carpeta de la plantilla, y añade como esta al final de lo que ya este escrito

Link to comment
Share on other sites

3 hours ago, gusman126 said:

Si el "IQITTHEMEEDITOR." puedes añadir .js o javascript, lo añades al cuadro donde puedes escribir, el codigo de la entrada que he puesto

Si no puedes, simplemente busca el custom.js dentro de la carpeta de la plantilla, y añade como esta al final de lo que ya este escrito

Bueno gusman126, pues tras varios intentos sigo sin poder solucionar el problema.

Introduje el código que indicas en el post en el apartado de Custom Js code y borre cache, y no solo no se solucionó, sino que al introducir un producto al carrito y pulsar "Seguir comprando" me vuelve a la página anterior pero arriba a la derecha ni aparece el icono del carrito Como digo, ademas de eso continua el problema que expuse. Tras leer tu post varias veces creo que el problema mio es diferente a ese, por eso imagino que no me expliqué bien de nuevo al inicio del post. 

Por tratar de explicarme: Yo puedo añadir producto al carrito, y en la mini ventana de "Producto añadido..." el botón de "seguir comprando" tambien funciona. Se redirije a la página anterior donde añadí el producto correctamente, hasta aquí bien, pero el problema es que al volver a esta página es cuando los botones de AÑADIR del resto de productos no funcionan. Es como si al pulsar el botón de Seguir comprando no estuviera haciendo REFRESH de la página para cargar las funcionalidades de los botones. Lo curioso es que simplemente haciendo yo un Refresh o ctrl+F5 ya vuelven a uncionar todos los botones. Lo curioso es como decía Prestafan33 que aunqe los botones no funcionan, sin embargo el menu si, puedo ir a otra categoría sin problemas...

¿Por que se quedan dormidos esos botones? No se como arreglarlo :(

Mil gracias por la ayuda

Slds,

Link to comment
Share on other sites

Los botones se quedan dormidos porque cuando pulsas sobre el botón de cerrar la ventana modal hay algún código Javascript que le añade la clase "-combinations-loading" a la section cuyo id="main" de tu página. He mirado un poco por encima el código Javascript de tu tema, y esa clase la activa cuando Prestashop lanza el evento "updateProduct" y la debería desactivar cuando le llega el evento "updatedProduct", lo cual me hace pensar que el código que lanza ese segundo evento no está funcionando como debe.

Una solución "de emergencia" y un tanto chapuzas es anular el efecto de esa clase con una regla de CSS:

section#main.-combinations-loading {
    pointer-events: all;
}

Lo que no sé es si esto puede causar algún efecto secundario en otras zonas de la web (por ejemplo, en la ficha de producto al cambiar las combinaciones). Se supone que la regla está creada para IMPEDIR que alguien pulse los botones de los productos mientras se realiza alguna operación de carga o actualización.

Link to comment
Share on other sites

3 minutes ago, Prestafan33 said:

Los botones se quedan dormidos porque cuando pulsas sobre el botón de cerrar la ventana modal hay algún código Javascript que le añade la clase "-combinations-loading" a la section cuyo id="main" de tu página. He mirado un poco por encima el código Javascript de tu tema, y esa clase la activa cuando Prestashop lanza el evento "updateProduct" y la debería desactivar cuando le llega el evento "updatedProduct", lo cual me hace pensar que el código que lanza ese segundo evento no está funcionando como debe.

Una solución "de emergencia" y un tanto chapuzas es anular el efecto de esa clase con una regla de CSS:


section#main.-combinations-loading {
    pointer-events: all;
}

Lo que no sé es si esto puede causar algún efecto secundario en otras zonas de la web (por ejemplo, en la ficha de producto al cambiar las combinaciones). Se supone que la regla está creada para IMPEDIR que alguien pulse los botones de los productos mientras se realiza alguna operación de carga o actualización.

Mmmmm... que raro! No se por qué razón sucedió eso. La semana pasada estuve haciendo pedidos de prueba en entorno de pruebas y todo genial. Pude añadir varios productos desde la home sin necesidad de refrescar. Desde que pasé a entorno real me sucedió esto.

Así las cosas, he tirado por el método chapuza y.... SI SEÑOR!!! Me encantan las chapuzas!!!!! 👏😂

Por ahora seguiré así a ver si ni hay efectos secundarios. 🤞

Gracias de nuevo @Prestafan33 !!!

Link to comment
Share on other sites

hace 11 horas, Pack_12 dijo:

Bueno gusman126, pues tras varios intentos sigo sin poder solucionar el problema.

Introduje el código que indicas en el post en el apartado de Custom Js code y borre cache, y no solo no se solucionó, sino que al introducir un producto al carrito y pulsar "Seguir comprando" me vuelve a la página anterior pero arriba a la derecha ni aparece el icono del carrito Como digo, ademas de eso continua el problema que expuse. Tras leer tu post varias veces creo que el problema mio es diferente a ese, por eso imagino que no me expliqué bien de nuevo al inicio del post. 

Por tratar de explicarme: Yo puedo añadir producto al carrito, y en la mini ventana de "Producto añadido..." el botón de "seguir comprando" tambien funciona. Se redirije a la página anterior donde añadí el producto correctamente, hasta aquí bien, pero el problema es que al volver a esta página es cuando los botones de AÑADIR del resto de productos no funcionan. Es como si al pulsar el botón de Seguir comprando no estuviera haciendo REFRESH de la página para cargar las funcionalidades de los botones. Lo curioso es que simplemente haciendo yo un Refresh o ctrl+F5 ya vuelven a uncionar todos los botones. Lo curioso es como decía Prestafan33 que aunqe los botones no funcionan, sin embargo el menu si, puedo ir a otra categoría sin problemas...

¿Por que se quedan dormidos esos botones? No se como arreglarlo :(

Mil gracias por la ayuda

Slds,

Ok, cuando entre en la web, no salia el popup y no me di cuenta que no se podian añadir mas productos, pensaba que era el problema del mensaje que te puse.

Veo que lo has solucionado, comprueba si hay una actualización de la plantilla y envia ticket al desarrollador.

 

Link to comment
Share on other sites

On 9/15/2019 at 6:01 PM, gusman126 said:

Te pasa exactamente esto : He probado a añadir el código necesario a la consola y todo funcionando perfectamente

 

 

Por cierto, @gusman126, ayer me estuve revisando los changelogs de las últimas versiones de Prestashop por otra consulta, concretamente los buxfixes, y en el de la versión 1.7.4.2 he visto entre otros muchos arreglos esto:

Quote

#9364: Fix JS error after add to cart

¿Puede ser el problema al que te refieres? He buscado en github el hilo del error y es éste, aunque no me queda claro del todo...

https://github.com/PrestaShop/PrestaShop/pull/9364

Edited by Prestafan33 (see edit history)
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...