Tudo o que quer saber antes de instalar.
Uma análise detalhada de como o Verificação de Idade no PrestaShop: Janela Bloqueante para CBD, Álcool, Vape e Profissionais de Saúde funciona, porque o construímos assim e o raciocínio por trás das funcionalidades acima.
Porquê um módulo dedicado em vez de uma janela genérica
As janelas de marketing clássicas fecham-se com um clique, não validam nada, não colocam qualquer cookie de conformidade e não deixam rasto na base de dados. Num site de CBD ou de álcool fiscalizado pela ASAE, isso é uma não conformidade direta. Para um revendedor de material médico, é um risco quanto às regras de publicidade de dispositivos médicos. O dfagegate faz o contrário: janela realmente bloqueante (bloqueio do scroll e captura do foco), validação no servidor, cookie SameSite e Secure e registos com IP em hash. É uma ferramenta de conformidade, não um widget de marketing.
O modo padrão: CBD, álcool, cigarros eletrónicos e armas
Para a maioria dos mercados regulados a 18 anos (ou 21 em certos países). Três tipos de verificação à escolha, conforme o seu perfil de risco: botões Sim/Não (rápido, com pouco atrito, suficiente para CBD ou álcool de grande consumo), data de nascimento completa com cálculo de idade no servidor com DateTimeImmutable (impossível de contornar pelas ferramentas de programador, recomendado para armas ou líquidos com nicotina) e redirecionamento configurável em caso de recusa para uma página externa.
O modo médico: publicidade reservada a profissionais de saúde
O módulo foi construído sobre o artigo L5122-9 do Código da Saúde Pública francês, que proíbe a publicidade junto do público em geral para certos dispositivos médicos e a reserva a profissionais de saúde habilitados. Em Portugal, o enquadramento equivalente é supervisionado pelo INFARMED. O dfagegate materializa a declaração: lista de profissões personalizável (médico, farmacêutico, fisioterapeuta, dentista, veterinário, etc.), caixa de declaração sob compromisso de honra e validação opcional do número profissional francês por regex. Numa loja portuguesa, em que o número é a cédula da respetiva ordem, basta desativar essa validação. O número nunca é guardado na base de dados: serve apenas para validação. É o espírito da conformidade mínima viável: um rasto da declaração, sem recolha excessiva.
Multiloja e multilingue desde a instalação
Todas as configurações (modo, tipo de verificação, textos, cores e exceções) são guardadas por contexto de loja através de id_shop_group e id_shop. Pode ter uma loja de CBD a 18 anos em PT e uma loja de cigarros eletrónicos a 21 anos noutro mercado dentro do mesmo PrestaShop, cada uma com os seus textos e o seu cookie. Os hooks são registados em todas as lojas na instalação, através de Shop::getCompleteListOfShopsID(), o que evita a armadilha clássica do módulo que só funciona na loja atual.
Robustez do lado do tema: injeção por JavaScript
O hook displayBeforeBodyClosingTag deveria ser universal a partir do PrestaShop 1.7.5, mas muitos temas personalizados omitem-no no layout. O dfagegate trata desse caso: a janela HTML pré-apresentada é passada para JavaScript por Media::addJsDef. No DOMContentLoaded, o script verifica se o elemento dfagegate-modal existe no DOM e, se não existir, injeta-o com insertAdjacentHTML. Funciona em qualquer tema, sem mexer no layout. Uma mensagem console.info confirma se o recurso foi ativado.
RGPD: cookie estritamente necessário e IP em hash
O cookie dfagegate_ok entra na categoria de «estritamente necessário ao cumprimento de uma obrigação legal de acesso» e está isento de consentimento prévio, ao contrário dos cookies de marketing, nos termos da diretiva ePrivacy transposta em Portugal pela Lei n.º 41/2004, cuja fiscalização cabe à CNPD. O valor é binário (1 = confirmado), com duração configurável, SameSite=Lax e Secure em HTTPS. Os registos de recusa opcionais guardam o IP em hash SHA-256 (nunca em claro), o que protege a privacidade e ainda permite estatísticas. Compatível com qualquer banner de consentimento existente.
Diagnóstico integrado para depurar depressa
Depois de ativado, o dfagegate acrescenta na tag head um comentário HTML do tipo «dfagegate v1.0.3 enabled=1 should_display=1». Em caso de problema, lê diretamente o código-fonte da página: enabled=0 significa que o módulo não está ativo, should_display=0 significa que há uma exceção ativa (IP, caminho ou cliente com sessão iniciada) e a ausência do comentário significa que o hook não está registado. Deixa de precisar de procurar nos registos.
Ainda não existem avaliações.