Otro Módulos PrestaShop

Verificación de Edad PrestaShop – Modal Bloqueante para CBD, Alcohol, Vape y Médico

El modal de edad bloqueante, limpio y conforme, que funciona en todas partes.

Vender CBD, alcohol, líquidos o armas de fuego en línea sin bloquear el acceso a menores te expone a sanciones regulatorias. Vender material médico restringido a profesionales sin una declaración documentada te expone a la normativa sobre publicidad de productos sanitarios (EU MDR Art. 7, transposiciones nacionales). dfagegate coloca un modal bloqueante desde la primera visita, establece una cookie SameSite=Lax (Secure en HTTPS) y materializa la decisión del visitante: texto sí/no, fecha de nacimiento con cálculo de edad en el servidor, o declaración de profesión + número de colegiado para el modo médico. Diseñado para PrestaShop 8 y 9, multitenda, multilingüe (ES/FR/EN/DE por defecto), con registros RGPD-friendly (IP hasheada SHA-256).

PrestaShop 8 + 9 Multitenda ES/FR/EN/DE Cookie SameSite RGPD-friendly Modo médico
  • Reembolso de 30 días
  • 12 meses de actualizaciones
  • Soporte 24h
www.datafirefly.com/es/
Age Gate DataFirefly
v1.0.3 · actualizado 2026-05-10
Qué hace

La versión corta.

01

Modal bloqueante en servidor + JS

Renderizado por PrestaShop mediante el hook displayBeforeBodyClosingTag, con un fallback JS que inyecta el modal en el body si tu tema personalizado no llama al hook. Funciona con el tema Classic y el 99% de los temas personalizados sin tocar el layout.

02

3 tipos de verificación a elegir

Botones Sí/No (CBD, alcohol, vape, mecheros), fecha de nacimiento completa con cálculo de edad en el servidor (armamentística, mercados estrictos de 21 años) o declaración de profesión sanitaria con número de colegiado (material médico restringido a profesionales).

03

Modo médico conforme a la normativa de publicidad

Para revendedores de productos sanitarios cuya publicidad está restringida a profesionales de la salud. Lista de profesiones personalizable, validación regex del número de colegiado (9-11 dígitos), número nunca almacenado, solo validación.

04

Registros RGPD-friendly (IP hasheada SHA-256)

Opcional: registra los rechazos en una tabla dedicada con IP hasheada (nunca en texto claro), fecha y motivo. Retención configurable. Cookie estrictamente necesaria en virtud del RGPD, exenta de consentimiento previo.

La versión larga

Todo lo que querrías saber antes de instalar.

Una mirada detallada a cómo funciona Verificación de Edad PrestaShop – Modal Bloqueante para CBD, Alcohol, Vape y Médico, por qué lo construimos así y la lógica detrás de las características anteriores.

§ 01

Por qué un módulo dedicado y no un popup genérico

Los popups de marketing clásicos se cierran con un clic, no validan nada, no establecen ninguna cookie de cumplimiento y no dejan ningún rastro en la base de datos. Para un sitio de CBD o alcohol inspeccionado por los reguladores, eso es un incumplimiento directo. Para un revendedor de material médico sujeto a restricciones publicitarias, es un riesgo para la autorización de comercialización. dfagegate hace lo contrario: modal realmente bloqueante (bloqueo de desplazamiento, trampa de enfoque), validación en el servidor, cookie SameSite/Secure, registros con IP hasheada. Es una herramienta de cumplimiento, no un widget de marketing.

§ 02

Modo estándar: CBD, alcohol, vape, armamentística

Para la mayoría de los mercados regulados para mayores de 18 años (o 21 en ciertos países). Tres tipos de verificación a elegir según tu perfil de riesgo: botones Sí/No (rápido, poca fricción, suficiente para CBD o alcohol para el gran público), fecha de nacimiento completa con cálculo de edad en el servidor mediante DateTimeImmutable (imposible de bypasear mediante las DevTools, recomendado para armamentística o líquidos con nicotina), redireccionamiento configurable en caso de rechazo.

§ 03

Modo médico: cumplimiento de la normativa sobre publicidad de productos sanitarios

El EU MDR Artículo 7 y las transposiciones nacionales (Real Decreto 1591/2009 en España) restringen la publicidad de determinados productos sanitarios a los profesionales de la salud autorizados. dfagegate materializa la declaración: lista de profesiones personalizable (médico, farmacéutico, fisioterapeuta, dentista, veterinario…), casilla de declaración de honor, validación opcional del número de colegiado mediante regex (9 a 11 dígitos). El número nunca se almacena, solo se usa para la validación.

§ 04

Multitenda y multilingüe desde la instalación

Todas las configuraciones se almacenan por contexto de tienda mediante id_shop_group / id_shop. Puedes tener una tienda de CBD a 18+ en español y una tienda de vape a 21+ en otro país en el mismo PrestaShop, cada una con sus propios textos y cookie. Los hooks se registran en todas las tiendas al instalar mediante Shop::getCompleteListOfShopsID(), evitando la trampa clásica del módulo que solo funciona en la tienda actual.

§ 05

Robustez con los temas: fallback de inyección JS

El hook displayBeforeBodyClosingTag debería ser universal en PrestaShop 1.7.5+, pero muchos temas personalizados lo omiten en su layout. dfagegate gestiona este caso: el modal HTML pre-renderizado se pasa a JS mediante Media::addJsDef. En el DOMContentLoaded, el script comprueba si el elemento dfagegate-modal existe en el DOM. Si no, lo inyecta él mismo mediante insertAdjacentHTML. Funciona en cualquier tema sin tocar el layout.

§ 06

RGPD: cookie estrictamente necesaria, IP hasheada

La cookie dfagegate_ok entra en la categoría de estrictamente necesaria para el cumplimiento de una obligación legal de acceso, exenta de consentimiento previo conforme al RGPD, a diferencia de las cookies de marketing. Su valor es binario (1 = confirmado), duración configurable, SameSite=Lax, Secure en HTTPS. Los registros de rechazo opcionales almacenan una IP hasheada SHA-256 (nunca en texto claro). Compatible con cualquier banner de consentimiento existente.

§ 07

Diagnóstico integrado para una depuración rápida

Una vez activado, dfagegate añade un comentario HTML en la etiqueta head del tipo 'dfagegate v1.0.3 enabled=1 should_display=1'. Si hay un problema, lo lees directamente en el código fuente de la página: enabled=0 significa que el interruptor está desactivado, should_display=0 significa que hay un bypass activo, ausencia del comentario significa que el hook no está registrado.