Shopware Design i motywy

DataFirefly Dark Mode: tryb ciemny z detekcją przeglądarki i preferencją klienta dla Shopware 6.7

Tryb ciemny dla storefrontu Shopware 6.7 z detekcją przeglądarki, zapisaną preferencją klienta i gwarantowanym brakiem efektu FOUC.

Shopware 6.7 nie oferuje natywnego trybu ciemnego po stronie storefrontu. Tymczasem od 2023 roku tryb ciemny w systemach operacyjnych jest powszechnie używany: iOS przełącza się automatycznie wieczorem, macOS i Windows mają własne ustawienia automatycznej jasności, a zaawansowani użytkownicy trzymają ekran w trybie ciemnym przez 60-80 % czasu. Sklep bez trybu ciemnego serwuje takim odwiedzającym agresywny biały błysk przy każdym załadowaniu strony, szczególnie uciążliwy wieczorem i na urządzeniach mobilnych. DfDarkMode dodaje do Twojego storefrontu Shopware 6.7 kompletny tryb ciemny: automatyczną detekcję prefers-color-scheme przeglądarki, przełącznik 3 stanów w nagłówku (Auto / Jasny / Ciemny), kartę preferencji w profilu klienta, utrwalanie przez cookie dla odwiedzających i przez pole własne klienta dla zalogowanych. Brak efektu FOUC jest gwarantowany dzięki skryptowi inline ładowanemu w sekcji head, który stosuje motyw PRZED renderowaniem: zero białego błysku, nawet przy pierwszej wizycie. Preferencja klienta jest synchronizowana automatycznie przy logowaniu. Snippety wielojęzyczne FR / EN / DE w zestawie. Zgodność z konwencją Bootstrap data-bs-theme, której używa już większość motywów Shopware z rocznika 2025 i nowszych.

Shopware 6.7 Bez FOUC Auto / Jasny / Ciemny Preferencja klienta Snippety FR / EN / DE Bootstrap data-bs-theme Licencja MIT
  • Zwrot w 30 dni
  • 12 miesięcy aktualizacji
  • Wsparcie 24 h
www.datafirefly.com/pl/
Tryb ciemny w sklepie Shopware
v1.0.0 · zaktualizowano 2026-05-08
Co robi

W skrócie.

01

Bez FOUC: zero białego błysku, nawet przy pierwszym załadowaniu

Minimalny skrypt inline ładowany w sekcji head odczytuje cookie preferencji i ustawia atrybut data-bs-theme na elemencie głównym strony PRZED pierwszym renderowaniem przez przeglądarkę. Efekt: odwiedzający w trybie ciemnym widzi stronę od razu ciemną, bez półsekundowego białego błysku, który zdradza brak trybu ciemnego w większości obecnych motywów Shopware. Detal techniczny niewidoczny dla dewelopera, ale robiący ogromną różnicę w odbiorze.

02

3 stany: Auto (śledzi przeglądarkę), Jasny, Ciemny

Przełącznik w nagłówku krąży między 3 stanami: Auto (śledzi prefers-color-scheme przeglądarki w czasie rzeczywistym przez MediaQuery listener), Jasny (wymusza jasny), Ciemny (wymusza ciemny). Użytkownik zachowuje kontrolę i nie jest zamykany w jednym trybie. Etykiety są przetłumaczone na FR / EN / DE.

03

Preferencja utrwalona i synchronizowana między urządzeniami przy logowaniu

Odwiedzający anonimowi: cookie df-dark-mode ważne 1 rok, SameSite=Lax. Zalogowani klienci: pole własne klienta df_dark_mode_preference (typ Select), odnajdywane automatycznie na wszystkich urządzeniach i synchronizowane przy logowaniu przez cookie. Na stronie profilu klienta dodawana jest karta wyboru, która pozwala zmienić preferencję bezpośrednio z poziomu konta.

04

Zgodność z istniejącym ciemnym motywem, bez modyfikacji CSS

Wtyczka ustawia data-bs-theme="dark" na elemencie głównym strony, czyli standardową konwencję Bootstrap 5.3+ dla trybu ciemnego. Jeśli Twój motyw lub własny CSS korzysta już z reguł celowanych selektorem [data-bs-theme="dark"], zadziałają one automatycznie i żadna zmiana CSS nie jest potrzebna. Jeśli nie masz jeszcze stylów ciemnych, możesz dodać je we własnym tempie: wtyczka nie dotyka Twojego CSS.

Wersja pełna

Wszystko, co warto wiedzieć, zanim zainstalujesz.

Szczegółowe spojrzenie na to, jak działa DataFirefly Dark Mode: tryb ciemny z detekcją przeglądarki i preferencją klienta dla Shopware 6.7, dlaczego zbudowaliśmy go w ten sposób i jaka myśl stoi za powyższymi funkcjami.

§ 01

Dlaczego tryb ciemny w Shopware 6.7

Shopware 6.7 nie oferuje natywnego trybu ciemnego po stronie storefrontu. Tymczasem od 2023 roku tryb ciemny w systemach operacyjnych jest powszechnie używany: iOS przełącza się automatycznie wieczorem dzięki True Tone, macOS i Windows mają własne ustawienia automatycznej jasności, a zaawansowani użytkownicy trzymają ekran w trybie ciemnym przez 60-80 % czasu. Sklep bez trybu ciemnego serwuje takim odwiedzającym agresywny biały błysk przy każdym załadowaniu strony, szczególnie uciążliwy wieczorem i na urządzeniach mobilnych. To sygnał jakościowy działający na Twoją niekorzyść: witryna nie nadąża za zwyczajami 2026 roku. DfDarkMode wypełnia tę lukę czystą implementacją, bez FOUC i z poszanowaniem preferencji klienta.

§ 02

Brak FOUC: detal, który odróżnia profesjonalny tryb ciemny od prowizorki

FOUC oznacza Flash of Unstyled Content, czyli ułamek sekundy, w którym strona pojawia się na biało, zanim JavaScript zastosuje ciemny motyw. Większość wtyczek trybu ciemnego zostawia ten błysk, ponieważ stosuje motyw przez JavaScript w zdarzeniu DOMContentLoaded, które następuje po pierwszym renderowaniu przeglądarki. DfDarkMode rozwiązuje problem minimalistycznym skryptem inline umieszczonym bezpośrednio w sekcji head base layoutu: skrypt odczytuje cookie preferencji (synchronicznie, około 10 linii JS) i ustawia atrybut data-bs-theme na elemencie głównym strony PRZED pierwszym renderowaniem. Efekt: zero białego błysku, nawet przy pierwszym załadowaniu i przy wymuszonym trybie ciemnym. Użytkownicy nigdy nie zobaczą Twojego sklepu w trybie fałszywie jasnym.

§ 03

3 stany i pełne utrwalanie preferencji

Przełącznik w nagłówku krąży między Auto, Jasny i Ciemny. Auto śledzi prefers-color-scheme przeglądarki w czasie rzeczywistym przez MediaQuery listener: gdy system operacyjny odwiedzającego przełączy się na ciemny o 18:00, storefront zmienia się natychmiast, bez przeładowania strony. Jasny i Ciemny wymuszają tryb niezależnie od preferencji przeglądarki. Preferencja jest utrwalana różnie w zależności od statusu: odwiedzający anonimowi przez cookie df-dark-mode ważne 1 rok, zalogowani klienci przez pole własne klienta df_dark_mode_preference tworzone automatycznie przy instalacji. Strona profilu klienta zawiera kartę wyboru pozwalającą zmienić preferencję bezpośrednio z poziomu konta. Przy logowaniu cookie jest synchronizowane z wartością pola własnego, więc klient, który ustawił preferencję na telefonie, odnajdzie to samo ustawienie na komputerze.

§ 04

Zgodność z Bootstrap data-bs-theme: zero CSS do napisania

Bootstrap 5.3+ wprowadził konwencję data-bs-theme="dark" jako standard trybu ciemnego. Jeśli Twój motyw Shopware korzysta już z reguł CSS celowanych selektorem [data-bs-theme="dark"], co dotyczy większości motywów premium z rocznika 2025 i nowszych, DfDarkMode jest zgodny od ręki: instalujesz, aktywujesz i działa. Jeśli Twój motyw nie ma jeszcze stylów ciemnych, możesz użyć natywnych zmiennych Bootstrap (--bs-body-bg, --bs-body-color i podobne, które automatycznie przyjmują inne wartości w trybie ciemnym) albo dodawać własne reguły we własnym tempie. DfDarkMode nie dotyka Twojego CSS: ustawia jedynie atrybut na elemencie głównym strony.

§ 05

Czysta i standardowa architektura Shopware

Wtyczka ściśle przestrzega konwencji Shopware 6.7: autoload PSR-4 w przestrzeni nazw Df/DarkMode, klasa Plugin z cyklem życia install, update i uninstall, pole własne klienta tworzone przez standardowe repozytorium DAL, trasa AJAX zadeklarowana atrybutami PHP 8 komponentu Symfony Routing, usługi wstrzykiwane przez services.xml, subskrybenci podłączeni do kernel.event_subscriber. Odinstalowanie respektuje flagę keepUserData kontekstu Shopware: jeśli administrator zaznaczy zachowanie danych użytkowników, pola własne i preferencje klientów pozostają, w przeciwnym razie wszystko jest usuwane czysto. Żadna własna migracja schematu nie jest potrzebna (wyłącznie pola własne). Kod źródłowy niezaszyfrowany, na licencji MIT, możliwy do audytu.

§ 06

Personalizacja i zdarzenie JS dla integracji

Domyślnie przełącznik jest wstawiany w bloku base_header_actions_wishlist base layoutu. Aby go przenieść, wystarczy override base.html.twig i umieszczenie include komponentu dark-mode-toggle w innym bloku (search, account, custom i podobne), a pełny przykład znajduje się w README. Po stronie JS wtyczka emituje zdarzenie df-dark-mode-changed na dokumencie przy każdej zmianie, z event.detail.preference (auto / light / dark) oraz event.detail.resolvedTheme (wyliczony light lub dark). To wygodne do synchronizacji innego komponentu (wykres Recharts, zewnętrzna ramka iframe, osadzony Calendly) z bieżącym motywem.