Todo lo que querrías saber antes de instalar.
Una mirada detallada a cómo funciona Contador de Cestas para Shopware 6: prueba social «En más de 20 cestas» en la ficha de producto, por qué lo construimos así y la lógica detrás de las características anteriores.
Por qué este módulo no existe de forma nativa en Shopware
En PrestaShop, contar las cestas que contienen un producto se hace con una unión sobre la tabla de líneas de cesta. En Shopware esa tabla no existe: la cesta completa se serializa en una columna payload de la tabla cart, a menudo comprimida. Una consulta SQL no puede saber lo que contiene una cesta sin deserializarla, y deserializar varios miles de cestas en cada visita a una ficha de producto queda descartado. Esa es la razón por la que este tipo de prueba social es habitual en PrestaShop y poco frecuente en Shopware.
La solución: un índice alimentado por eventos
El plugin crea una tabla df_cart_popularity que asocia un token de cesta, un identificador de producto, un canal de venta, una cantidad y un indicador de pedido. Ese índice se actualiza en cada persistencia de la cesta mediante CartSavedEvent: productos añadidos, cantidades modificadas, líneas eliminadas, todo se sincroniza en dos consultas. El recuento se convierte entonces en un simple COUNT DISTINCT sobre un índice compuesto, ejecutado una vez por duración de caché y por producto. El sobrecoste en el lado de la cesta es de unas dos consultas indexadas por modificación, invisible en un perfil de rendimiento.
Dos formas de mostrar el número
El modo tramo redondea el contador a la baja según el paso que usted defina, para un efecto «En más de 20 cestas» que resulta creíble y evoluciona por franjas. El modo exacto muestra la cifra real para las tiendas que prefieren la transparencia total, con una variante en singular gestionada automáticamente. Las tres formulaciones viven en los snippets de Shopware y se modifican por idioma desde la administración, sin tocar el código y con un marcador dinámico para el número.
Un recuento honesto y configurable
La ventana temporal limita el recuento a las cestas actualizadas recientemente, lo que evita acumular cestas fantasma de hace meses. La opción solo cestas activas excluye las cestas ya convertidas en pedido, detectadas mediante CartConvertedEvent. La limitación por canal de venta impide que un pico en su tienda alemana infle el contador de la tienda francesa. Cada una de estas opciones puede sobrescribirse canal por canal desde la configuración del plugin.
Compatibilidad 6.5 a 6.7 sin concesiones
La plantilla extiende únicamente el bloque externo del buy widget y llama a su padre, lo que la hace inmune a los renombrados de bloques internos ocurridos entre 6.5 y 6.7 y compatible con los temas que personalizan el bloque de compra. La limpieza de retención funciona sin tarea programada ni cola de mensajes, porque la firma del gestor de tareas cambió entre 6.5 y 6.6: se ejecuta como máximo una vez por hora, o bajo demanda con el comando CLI. La estructura de visualización se adjunta tanto a la entidad producto como a la página, lo que cubre el renderizado mediante el elemento Buy box de Shopping Experiences y también la vista rápida.
Estándares DataFirefly
Plugin desarrollado sin dependencia de Composer, renderizado del lado servidor, sin biblioteca JavaScript externa y sin llamada de red saliente. Una única tabla creada, eliminada al desinstalar cuando decide no conservar los datos. Ningún dato personal registrado: el índice solo contiene el token de cesta seudónimo y la referencia del producto, con una retención configurable. Código fuente PHP y Twig sin ofuscar, licencia perpetua, 12 meses de actualizaciones incluidas.
No hay valoraciones aún.