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.
Aplique a janela à secção regulada, não a toda a loja
Desde a versão 1.1.0, o âmbito de exibição configura-se em três modos. Toda a loja: comportamento histórico, a janela aparece em todo o lado. Categorias selecionadas: marque as suas categorias numa árvore com filtro de pesquisa; a janela aparece nessas páginas de categoria e nas fichas dos produtos que lhes pertencem, subcategorias incluídas se a opção estiver ativa. Produtos selecionados: pesquise os seus produtos por nome ou referência; a janela só aparece nas suas fichas. O caso de uso típico: uma mercearia gourmet que também vende bebidas espirituosas, uma parafarmácia com uma secção de material profissional. A secção regulada fica protegida e o resto da loja continua acessível sem atrito. A decisão é tomada no servidor, não em JavaScript.
Multiloja e multilingue desde a instalação
Todas as configurações (modo, tipo de verificação, textos, cores, exceções e âmbito de exibição) 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, IP em hash e retenção automática
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 separador de registos mostra as estatísticas (total de 30 dias, repartição por motivo, últimas recusas) e a retenção é automática: as entradas mais antigas do que a duração configurada (365 dias por predefinição) são eliminadas. 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.1.0 enabled=1 scope=all 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, scope indica o âmbito ativo e should_display=0 significa que há uma exceção ativa ou que a página está fora do âmbito selecionado. O botão Testar a janela abre a loja no modo de pré-visualização (?dfagegate_preview=1): a janela aparece mesmo com o cookie definido, sem colocar nenhum. Deixa de precisar de janela privada ou de procurar nos registos.
Ainda não existem avaliações.