Shopware Design & Temas

DataFirefly Dark Mode: modo escuro com deteção do navegador e preferência do cliente para Shopware 6.7

Modo escuro para o storefront do Shopware 6.7, com deteção do navegador, preferência do cliente guardada e anti-FOUC garantido.

O Shopware 6.7 não oferece modo escuro nativo no storefront. Ora, desde 2023 o modo escuro do sistema está massivamente adotado: o iOS muda automaticamente ao fim do dia, o macOS e o Windows têm as suas definições de luminosidade automática, e os utilizadores mais avançados mantêm o ecrã em escuro 60 a 80 % do tempo. Uma loja sem modo escuro atira a estes visitantes um clarão branco agressivo a cada carregamento de página, particularmente incómodo à noite e em telemóvel. O DfDarkMode acrescenta um modo escuro completo ao seu storefront Shopware 6.7: deteção automática do prefers-color-scheme do navegador, botão de 3 estados no cabeçalho (Auto, Claro, Escuro), cartão de preferência no perfil do cliente, persistência por cookie para os visitantes e por campo próprio de cliente para os que têm sessão iniciada. Anti-FOUC garantido graças a um script inline carregado no head que aplica o tema ANTES da renderização, portanto zero clarão branco, mesmo na primeira visita. Sincronização automática da preferência no início de sessão. Snippets multilingues FR / EN / DE incluídos. Compatível com a convenção Bootstrap data-bs-theme="dark" que a maioria dos temas Shopware de 2025 em diante já usa.

Shopware 6.7 Anti-FOUC Auto / Claro / Escuro Preferência do cliente Snippets FR / EN / DE Bootstrap data-bs-theme Licença MIT
  • Reembolso em 30 dias
  • 12 meses de atualizações
  • Suporte em 24h
www.datafirefly.com/pt/
Modo escuro para uma loja Shopware
v1.0.0 · atualizado 2026-05-08
O que faz

A versão curta.

01

Anti-FOUC: zero clarão branco, mesmo no primeiro carregamento

Um script inline mínimo carregado no head lê o cookie de preferência e aplica o atributo data-bs-theme no elemento raiz ANTES da primeira renderização do navegador. O resultado é que um visitante em modo escuro vê a página logo em escuro, sem o clarão branco de meio segundo que denuncia a ausência de modo escuro na maioria dos temas Shopware atuais. Um pormenor técnico invisível para o programador, mas uma enorme diferença na experiência percebida.

02

3 estados: Auto (segue o navegador), Claro, Escuro

O botão no cabeçalho alterna entre 3 estados: Auto (segue o prefers-color-scheme do navegador em tempo real através de um MediaQuery listener), Claro (força o claro) e Escuro (força o escuro). O utilizador mantém o controlo sem ser obrigado a um modo específico. As etiquetas estão traduzidas em FR / EN / DE.

03

Preferência guardada e sincronizada entre dispositivos no início de sessão

Visitantes anónimos: cookie df-dark-mode com validade de 1 ano, SameSite=Lax. Clientes com sessão iniciada: campo próprio de cliente df_dark_mode_preference (tipo Select), reencontrado automaticamente em todos os dispositivos e sincronizado no início de sessão através do cookie. É acrescentado um cartão de seleção na página de perfil do cliente para alterar a preferência diretamente a partir da conta.

04

Compatível com o seu tema escuro existente, sem alterar o CSS

A extensão coloca data-bs-theme="dark" no elemento raiz da página, a convenção normal do Bootstrap 5.3+ para o modo escuro. Se o seu tema ou o seu CSS próprio já usa regras direcionadas por [data-bs-theme="dark"], elas aplicam-se automaticamente e não é preciso alterar CSS. Se ainda não tem estilos escuros, pode acrescentá-los ao seu ritmo, pois a extensão não toca no seu CSS.

A versão longa

Tudo o que quer saber antes de instalar.

Uma análise detalhada de como o DataFirefly Dark Mode: modo escuro com deteção do navegador e preferência do cliente para Shopware 6.7 funciona, porque o construímos assim e o raciocínio por trás das funcionalidades acima.

§ 01

Porquê um modo escuro no Shopware 6.7

O Shopware 6.7 não oferece modo escuro nativo no storefront. Ora, desde 2023 o modo escuro do sistema está massivamente adotado: o iOS muda automaticamente ao fim do dia com o True Tone, o macOS e o Windows têm as suas definições de luminosidade automática, e os utilizadores mais avançados mantêm o ecrã em escuro 60 a 80 % do tempo. Uma loja sem modo escuro atira a estes visitantes um clarão branco agressivo a cada carregamento de página, particularmente incómodo à noite e em telemóvel. É um sinal de qualidade ao contrário: o seu site não acompanha os hábitos de 2026. O DfDarkMode preenche essa lacuna com uma implementação limpa, anti-FOUC e respeitadora da preferência do cliente.

§ 02

O anti-FOUC: o pormenor que separa um modo escuro profissional de um improviso

FOUC quer dizer Flash of Unstyled Content, aquele quarto de segundo em que a página aparece em branco antes de o JavaScript aplicar o tema escuro. A maioria das extensões de modo escuro deixa esse clarão porque aplica o tema por JavaScript no DOMContentLoaded, o que acontece depois da primeira renderização do navegador. O DfDarkMode resolve o problema com um script inline minimalista colocado diretamente no head do base layout: esse script lê o cookie de preferência (de forma síncrona, cerca de 10 linhas de JS) e coloca o atributo data-bs-theme no elemento raiz ANTES de o navegador fazer a primeira renderização. O resultado é zero clarão branco, mesmo no primeiro carregamento e mesmo em modo escuro forçado. Os utilizadores nunca veem a loja num falso modo claro.

§ 03

3 estados e persistência completa

O botão no cabeçalho alterna entre Auto, Claro e Escuro. O Auto segue o prefers-color-scheme do navegador em tempo real através de um MediaQuery listener: quando o sistema do visitante passa a escuro às 18h, o storefront muda de imediato, sem recarregar a página. O Claro e o Escuro forçam o modo independentemente da preferência do navegador. A preferência é guardada de forma diferente consoante o estado: visitantes anónimos por cookie df-dark-mode com validade de 1 ano, clientes com sessão iniciada por campo próprio de cliente df_dark_mode_preference criado automaticamente na instalação. A página de perfil do cliente contém um cartão de seleção para alterar a preferência diretamente a partir da área de cliente. No início de sessão, o cookie é sincronizado com o valor do campo próprio, pelo que um cliente que definiu a preferência no telemóvel reencontra a mesma definição no computador.

§ 04

Compatibilidade com o data-bs-theme do Bootstrap: zero CSS a escrever

O Bootstrap 5.3+ introduziu a convenção data-bs-theme="dark" como norma para o modo escuro. Se o seu tema Shopware já usa regras CSS direcionadas pelo seletor [data-bs-theme="dark"], o que acontece na maioria dos temas premium de 2025 em diante, o DfDarkMode é imediatamente compatível: instala, ativa e funciona. Se o seu tema ainda não tem estilos escuros, pode usar as variáveis nativas do Bootstrap (--bs-body-bg, --bs-body-color e outras, que têm valores escuros diferentes automaticamente), ou acrescentar as suas próprias regras ao seu ritmo. O DfDarkMode não toca no seu CSS, limita-se a colocar um atributo no elemento raiz da página.

§ 05

Arquitetura Shopware limpa e normalizada

A extensão segue rigorosamente as convenções do Shopware 6.7: autoload PSR-4 sob o namespace Df/DarkMode, classe Plugin com ciclo de vida install, update e uninstall, campo próprio de cliente criado através do repositório DAL normal, rota AJAX declarada pelos atributos PHP 8 do componente Symfony Routing, serviços injetados por services.xml, subscribers ligados a kernel.event_subscriber. A desinstalação respeita a flag keepUserData do contexto do Shopware: se o administrador marcar Manter os dados do utilizador, os campos próprios e as preferências dos clientes ficam; caso contrário, tudo é eliminado corretamente. Não é necessária qualquer migração de esquema própria (apenas campos próprios). Código-fonte não cifrado, com licença MIT, auditável.

§ 06

Personalização e evento JS para integrações

Por predefinição, o botão é inserido no bloco base_header_actions_wishlist do base layout. Para o mover, basta sobrepor o base.html.twig e colocar o include do componente dark-mode-toggle noutro bloco (pesquisa, conta, próprio, e outros), com exemplo completo no README. Do lado do JS, a extensão emite um evento df-dark-mode-changed no documento a cada alteração, com event.detail.preference (auto, light, dark) e event.detail.resolvedTheme (light ou dark calculado). É prático para sincronizar outro componente (gráfico Recharts, iframe externo, embed do Calendly e outros) com o tema atual.