Barra de envío gratuito (dffreeshipbar): guía completa
Instale y configure la barra de envío gratuito para PrestaShop 8 y 9: umbrales por país y por estado, ficha de producto, carrito lateral Creative Elements, mensajes por idioma, apariencia, transportistas, grupos de clientes, multimoneda y resolución de problemas.
Guía completa del módulo dffreeshipbar 2.3.0 para PrestaShop 8 y 9: instalación, umbrales por país y por estado, posiciones de visualización (incluidas la ficha de producto y el carrito lateral de Creative Elements), mensajes, apariencia, transportistas, multimoneda y resolución de problemas.
Descripción general
dffreeshipbar muestra una barra de progreso que indica al cliente cuánto le falta gastar para disfrutar del envío gratuito. Cuando se alcanza el umbral, el mensaje pasa a una confirmación.
El módulo funciona con sus propios umbrales, almacenados en sus propias tablas. Nunca consulta la variable nativa PS_SHIPPING_FREE_PRICE: puede dejarla a 0 y gestionar el envío gratuito con rangos de transportista sin conflicto.
Su particularidad es la resolución territorial de dos niveles: un umbral puede definirse por país y por estado de PrestaShop. Así se pueden tratar de forma distinta territorios vinculados al mismo país, como los departamentos de ultramar vinculados a Francia.
Requisitos
- PrestaShop 8.0 a 9.x
- PHP 7.4 como mínimo (8.0 a 8.3 compatibles)
- Tema Classic, Hummingbird o un tema personalizado que invoque los hooks estándar
- Creative Elements (opcional) para la posición de carrito lateral
Instalación
- En el back office, ir a Módulos → Gestor de módulos → Subir un módulo.
- Subir el archivo
dffreeshipbar-2.3.0.zip. - Hacer clic en Instalar y luego en Configurar.
El módulo crea dos tablas (PREFIX_dffreeshipbar_country y PREFIX_dffreeshipbar_state, cada una con una columna id_shop) y registra los hooks displayHeader, displayBanner, displayNav2, displayNavFullWidth, displayShoppingCartFooter, displayCheckoutSummaryTop, displayProductAdditionalInfo, displayCEShoppingCartFooter y actionCarrierUpdate.
La pantalla de configuración
La pantalla está en Módulos → DataFirefly – Barra de envío gratuito → Configurar. Arriba, una franja de resumen indica el estado del módulo, el número de territorios con umbral y de territorios excluidos, el umbral de reserva, el filtrado por transportista y las posiciones activas. Cada tarjeta abre la pestaña correspondiente.
La configuración se reparte en cinco pestañas: General, Territorios, Transportistas, Mensajes y Apariencia. La pestaña activa se conserva tras guardar.
Pestaña General
Umbral global de reserva
- Usar un umbral global por defecto: en No, la barra solo aparece en los territorios configurados. En Sí, todo territorio no configurado recibe el importe indicado.
- Umbral global por defecto: el importe aplicado como último recurso.
Multimoneda
Todos los importes del módulo se introducen en la moneda por defecto de la tienda. Para un visitante que paga en otra moneda, el umbral se convierte al tipo de cambio de PrestaShop antes de compararlo con su carrito, y los importes mostrados se formatean en su moneda.
Requerir una dirección de entrega
Antes de introducir una dirección, el destino es solo una estimación y el estado se desconoce. Tres modos:
- Nunca: la barra se muestra durante la navegación, según el país estimado.
- Para países con estados (recomendado): la barra permanece visible en todas partes salvo en los países cuyos estados puedan aplicar condiciones distintas, donde espera a la dirección.
- Siempre: nada mientras no exista una dirección en el carrito.
Base de cálculo
- Comparar totales con impuestos: debe coincidir con la base de sus rangos de transportista; si no, la barra y el proceso de compra no coincidirán.
- Incluir las reglas de carrito en el total: un carrito de 70 € con un vale de 10 € se evalúa entonces en 60 €.
Los gastos de envío nunca cuentan para el progreso.
Grupos de clientes
Sin ninguna casilla marcada, todos los clientes ven la barra. Marque grupos para reservarla a ellos, por ejemplo a particulares cuando los profesionales tienen otras condiciones de envío. Un visitante no identificado pertenece al grupo «Visitante».
Ocultar mientras el carrito esté vacío
La barra aparece con el primer producto añadido. La ficha de producto la mantiene en todos los casos, ya que es donde el cliente decide añadir.
Posiciones de visualización
- Parte superior: banner visible en todo el sitio.
- Ficha de producto: ver la sección dedicada más abajo.
- Carrito y compra: bloque en la página de carrito y en el proceso de compra.
- Carrito lateral de Creative Elements: ver la sección dedicada más abajo.
Para una colocación libre, el módulo implementa WidgetInterface:
{widget name='dffreeshipbar'}
{widget name='dffreeshipbar' position='cart'}
La barra en la ficha de producto
La barra aparece bajo el botón de añadir al carrito (hook displayProductAdditionalInfo). Además del progreso actual, una línea indica el efecto de añadir el producto mostrado:
- si el producto basta para alcanzar el umbral: «Añada este producto y su pedido tendrá envío gratuito»;
- si no: «Con este producto, solo le faltarán 2,50 € para el envío gratuito».
El cálculo usa el precio de la combinación seleccionada multiplicado por la cantidad indicada, con la misma base de impuestos que el carrito y los precios específicos del cliente. Se repite cuando el cliente cambia de combinación o de cantidad.
El carrito lateral de Creative Elements
En una tienda cuya cabecera está construida con Creative Elements, la barra se integra en el carrito lateral del widget Carrito con la apariencia Sidebar, mediante el hook displayCEShoppingCartFooter que ejecuta ese widget. La apariencia Classic no abre panel lateral.
El ajuste Posición en el carrito lateral ofrece tres ubicaciones: bajo el título del panel, encima del resumen o encima de los botones de compra.
La barra se actualiza en Ajax con cada adición al carrito y cada eliminación desde el panel, sin recargar, y la barra se desliza desde su valor anterior. Creative Elements solo reconstruye la lista de productos y el resumen: la barra permanece en su sitio entre actualizaciones.
Pestaña Territorios
La tabla lista todos los países activos de la tienda y, bajo cada país con estados, sus estados con sangría. Un campo de búsqueda y un filtro de territorios configurados facilitan la navegación. Los importes están en la moneda por defecto.
Orden de resolución
Para una dirección de entrega, el módulo busca en este orden y se detiene en la primera coincidencia: el estado de la dirección, luego el país, luego el umbral global de reserva si está activado. Sin coincidencia, la barra no se muestra.
Casilla e importe: dos efectos distintos
- Casilla desmarcada: la barra queda oculta para ese territorio, sin herencia del país ni del umbral global.
- Casilla marcada, importe vacío: la regla se elimina y el territorio hereda del nivel superior.
- Casilla marcada, importe indicado: se aplica ese importe.
Ejemplo: solo Francia metropolitana
- Francia: marcada, importe
65. - Córcega: marcada, importe vacío; hereda los 65 €.
- Guadalupe, Martinica, Guayana Francesa, Reunión, Mayotte: desmarcadas.
- Umbral global de reserva: desactivado.
Pestaña Transportistas
Tres modos: todos los transportistas, visualización reservada a los transportistas marcados u ocultación para los transportistas marcados. Las reglas se guardan sobre el id_reference del transportista: PrestaShop recrea un transportista en cada edición, pero su referencia permanece estable.
El ajuste Antes de seleccionar transportista decide si la barra se muestra en el catálogo y el carrito mientras no se ha elegido transportista.
Pestaña Mensajes
Cinco mensajes se personalizan para cada idioma activo:
- Carrito vacío (por defecto: «Envío gratuito a partir de {threshold}.»)
- Carrito en curso (por defecto: «¡Solo le faltan {amount} para el envío gratuito!»)
- Umbral alcanzado
- Ficha de producto: este producto activa el envío gratuito
- Ficha de producto: importe restante tras añadir el producto
Hay dos marcadores: {amount} para el importe que falta y {threshold} para el umbral. Se sustituyen por el importe formateado en la moneda del visitante, en negrita. El texto se muestra tal cual: el HTML introducido no se interpreta. Un campo vacío conserva el texto traducido incluido con el módulo.
Pestaña Apariencia
- Colores: fondo, barra, texto y mensaje de éxito, con un selector de color y un campo hexadecimal sincronizados.
- Icono: camión, paquete, regalo o ninguno. Los iconos son SVG y una marca de verificación sustituye al icono al alcanzar el umbral.
- Animación: rayas animadas durante el progreso, desactivadas automáticamente para los visitantes que han pedido a su sistema reducir el movimiento.
- Banner que se puede cerrar: añade un botón de cierre al banner superior. Una vez cerrado, permanece oculto hasta que se cierra el navegador. Las demás posiciones no se ven afectadas.
Una vista previa en directo muestra el banner, la ficha de producto y el umbral alcanzado, y se actualiza con cada cambio antes de guardar.
Actualización en tiempo real
Cada posición imprime un contenedor, incluso cuando la barra no tiene nada que mostrar. Tras un evento de carrito, dirección, paso de compra, combinación o cantidad, una sola petición obtiene la barra de todas las posiciones de la página, y cada contenedor se rellena o se vacía en su sitio. Una barra oculta al cargar puede así aparecer sin recargar, y a la inversa.
El script escucha los eventos de PrestaShop updateCart, updatedCart, updatedAddressForm, changedCheckoutStep, updateDeliveryForm y updatedProduct. Para provocar un refresco desde su propio código:
document.dispatchEvent(new Event('dffreeshipbar:refresh'));
Multitienda y traducciones
Los umbrales llevan un id_shop: cada tienda tiene sus propias reglas. Seleccione el contexto de la tienda en la parte superior del back office antes de abrir la configuración.
El módulo se entrega traducido al español, francés, inglés, alemán, italiano y polaco. Para los textos visibles por el cliente, la pestaña Mensajes cubre la mayoría de las necesidades.
Actualización desde una versión anterior
Sustituir el ZIP ejecuta automáticamente los scripts de migración. Sus umbrales se conservan. Las nuevas opciones empiezan desactivadas en una tienda existente: ficha de producto, ocultación con carrito vacío, banner que se puede cerrar y restricción por grupo. Los colores guardados por versiones anteriores se normalizan al formato #rrggbb, y se vacían las cachés de Smarty y opcache.
Resolución de problemas
La barra no aparece en ninguna parte
- ¿Indica la franja de resumen que ningún territorio tiene umbral?
- ¿Están activados el módulo y las posiciones deseadas?
- ¿Está la exigencia de dirección en Siempre mientras prueba sin dirección?
- ¿Hay grupos de clientes marcados sin que su cuenta de prueba pertenezca a ninguno?
- ¿Está activa la opción de ocultar con el carrito vacío mientras el carrito está vacío?
La barra aparece donde no debería
Compruebe que la casilla del territorio esté realmente desmarcada, y no solo que se haya vaciado su importe.
Nada en el carrito lateral de Creative Elements
- El widget Carrito debe usar la apariencia Sidebar.
- La opción «Mostrar en el panel lateral del carrito de Creative Elements» debe estar activa.
- Tras actualizar desde la 2.1.0 o anterior, vacíe la caché en Parámetros avanzados → Rendimiento.
El importe no coincide con el proceso de compra
- El ajuste de impuestos debe coincidir con la base de sus rangos de transportista.
- Un vale puede devolver el carrito por debajo del umbral.
- El módulo no lee sus rangos: traslade al módulo cualquier cambio de rango.
La barra no se actualiza tras añadir al carrito
El refresco se apoya en los eventos JavaScript de PrestaShop. Si un módulo de carrito de terceros no los emite, lance dffreeshipbar:refresh desde su código. Revise también la consola: un error JavaScript previo impide que se instale la escucha.
Desinstalación
La desinstalación elimina las dos tablas de umbrales y todas las claves de configuración con el prefijo DFFREESHIPBAR_, mensajes incluidos. Exporte ambas tablas si prevé reinstalar.
FAQ rápida
- ¿Lee el módulo
PS_SHIPPING_FREE_PRICE? Nunca. - ¿Lee el módulo mis rangos de transportista? No, los umbrales se introducen manualmente. Una sincronización automática es posible como desarrollo específico.
- Mi envío gratuito depende también del peso. ¿Está contemplado? No, el módulo solo mide un importe.
- ¿Puedo poner negrita o un enlace en un mensaje? No, el texto se escapa. Los importes de los marcadores se ponen en negrita automáticamente.
- ¿Vuelve a aparecer el banner cerrado? La próxima vez que se abra el navegador.
Soporte y actualizaciones
El módulo incluye 12 meses de actualizaciones y soporte. Soporte por email en francés o inglés, respuesta en 24 horas hábiles. Contacte con el soporte de DataFirefly indicando las versiones de PrestaShop, PHP y del módulo, el tema utilizado, y el territorio y el transportista implicados.