# Sezonowe dekoracje sklepu według harmonogramu: dokumentacja

> Sezonowe dekoracje według harmonogramu (moduł dfthemescheduler) automatycznie ubierają Twój sklep PrestaShop na każde ważne wydarzenie handlowe. Tworzysz kampanie z datami, na Boże Narodzenie, Black Friday, wyprzedaże czy walentynki, łączące pasek,…

- Strona: <https://www.datafirefly.com/pl/documentation/decoration-saisonniere-noel-black-friday/>
- Język: pl
- Zaktualizowano: 2026-10-30
- Inne języki: [fr](https://www.datafirefly.com/documentation/decoration-saisonniere-noel-black-friday/index.md), [en](https://www.datafirefly.com/en/documentation/seasonal-decorations-christmas-black-friday/index.md), [es](https://www.datafirefly.com/es/documentation/decoracion-temporada-navidad-black-friday/index.md), [de](https://www.datafirefly.com/de/documentation/saisonale-dekoration-weihnachten-black-friday/index.md), [it](https://www.datafirefly.com/it/documentation/decorazioni-stagionali-natale-black-friday/index.md), [pt](https://www.datafirefly.com/pt/documentation/decoration-saisonniere-noel-black-friday/index.md), [nl](https://www.datafirefly.com/nl/documentation/decoration-saisonniere-noel-black-friday/index.md)
- Indeks: <https://www.datafirefly.com/pl/documentation/llms.txt>

**Sezonowe dekoracje według harmonogramu** (moduł `dfthemescheduler`) automatycznie ubierają Twój sklep PrestaShop na każde ważne wydarzenie handlowe. Tworzysz kampanie z datami, na Boże Narodzenie, Black Friday, wyprzedaże czy walentynki, łączące pasek, baner, paletę kolorów, efekty wizualne i blok na stronie głównej. Każda kampania włącza się i wyłącza sama w zaplanowanych terminach, bez żadnego zadania cron.

**Nowości w wersji 2.0.0**

- Pasek ogłoszeń wyświetlany na samej górze strony (już nie w nagłówku), z możliwością zamknięcia i przypięcia podczas przewijania, z przyciskiem „Kopiuj” dla kodu promocyjnego.
- Dni tygodnia i przedział godzinowy, na przykład wyprzedaż błyskawiczna w piątek i sobotę od 18:00 do 22:00.
- Kod promocyjny powiązany z regułą koszyka PrestaShop, utworzoną z poziomu kampanii i zsynchronizowaną z jej datami.
- Zakładka Wyniki: wizyty, kliknięcia, współczynnik kliknięć, skopiowane kody i zamówienia z kodem.
- Siedem gotowych szablonów (Boże Narodzenie, Black Friday, Halloween, Walentynki, Nowy Rok, wyprzedaż zimowa i letnia) z ogłoszeniem przetłumaczonym na 8 języków.
- Panel, planer roczny z wykrywaniem nakładania się kampanii, formularz z zakładkami i podgląd na żywo.
- Kierowanie według stron i grup klientów; animacja ograniczona w czasie lub wyłączona na telefonach.
- Interfejs przetłumaczony na 8 języków i poprawka błędu 500, który uniemożliwiał edycję kampanii w PrestaShop 8 i 9.

## Prezentacja

Moduł opiera się na prostej logice: **kampania** to zestaw elementów wizualnych powiązany z zakresem dat. Gdy bieżąca data mieści się w tym zakresie, kampania staje się „live" i jej oprawa jest stosowana na froncie. Poza nim sklep wraca do normalnego wyglądu bez pozostawiania śladów.

W danym momencie wyświetlana jest tylko jedna kampania. Jeśli kilka kampanii nachodzi na siebie, wygrywa ta z najwyższym **priorytetem**. Możesz więc nałożyć długą kampanię bożonarodzeniową i bardziej priorytetowy szczyt Black Friday w jej środku.

Każda kampania może łączyć, do wyboru, następujące elementy: pasek u góry strony z komunikatem i odliczaniem, baner graficzny per język, paletę siedmiu kolorów, efekt nastrojowy (śnieg, konfetti, serca, liście, gwiazdy, fajerwerki), blok HTML na stronie głównej oraz własny CSS. Wszystkie te elementy są opcjonalne.

![Świąteczny sklep: pasek ogłoszeń z kodem do skopiowania, odliczaniem, banerem i śniegiem w motywie Hummingbird](https://www.datafirefly.com/wp-content/uploads/2026/10/sklep-swiateczny-pasek-ogloszen-snieg-themescheduler-pl.webp)

Kampania świąteczna w sklepie: pasek ogłoszeń, kod do skopiowania, baner i śnieg.

## Instalacja

Zainstaluj moduł jak każdy inny moduł PrestaShop:

1. W zapleczu przejdź do **Moduły > Menedżer modułów**.
2. Kliknij **Wgraj moduł** i wybierz plik `dfthemescheduler-2.0.0.zip`.
3. Po zakończeniu instalacji kliknij **Konfiguruj**, aby otworzyć planer kampanii.

Moduł tworzy swoje tabele, rejestruje hooki wyświetlania i dodaje zakładkę administracyjną dostępną przez przycisk **Konfiguruj**. Żadne zewnętrzne zależności nie są wymagane: ani Composer, ani jQuery, ani usługi zewnętrzne.

Masz wersję 1.x? Po prostu wgraj zip 2.0.0 w Menedżerze modułów: aktualizacja dodaje nowe ustawienia, zachowuje Twoje kampanie i czyści pamięć podręczną PrestaShop, aby nowa wersja była od razu widoczna. Pasek ogłoszeń przechodzi na samą górę strony; dawne położenie pozostaje dostępne („W nagłówku”). Moduł ma teraz własną pozycję w menu **Wygląd > Kampanie sezonowe**.

![DF Theme Scheduler: pierwsze uruchomienie z gotowymi szablonami sezonowymi w panelu PrestaShop](https://www.datafirefly.com/wp-content/uploads/2026/10/kampanie-sezonowe-pierwsze-uruchomienie-themescheduler-pl.webp)

Pierwsze uruchomienie: utwórz kampanię lub zacznij od szablonu.

## Gotowe szablony

Po otwarciu moduł proponuje siedem szablonów: Boże Narodzenie, Black Friday, Halloween, Walentynki, Nowy Rok, wyprzedaż zimową i letnią. Jedno kliknięcie tworzy kampanię z jej datami (data Black Friday jest wyliczana co roku), kolorami, animacją i ogłoszeniem już przetłumaczonym na Twoje języki. Kampania jest tworzona jako wyłączona: sprawdź ją, a potem włącz.

![Gotowe szablony: Boże Narodzenie, Black Friday, Halloween, Walentynki, Nowy Rok i wyprzedaże](https://www.datafirefly.com/wp-content/uploads/2026/10/szablony-kampanii-sezonowych-themescheduler-pl.webp)

Siedem szablonów sezonowych.

## Tworzenie kampanii

Z ekranu konfiguracji kliknij **Dodaj kampanię**. Formularz ma osiem zakładek: Daty, Pasek ogłoszeń, Baner i strona główna, Animacja, Kolory i CSS, Kierowanie, Kod promocyjny i Wyniki. Nad nim podgląd na żywo pokazuje pasek, kolory, baner i animację przy każdej zmianie. Pod datami status jest liczony na bieżąco („Start za 12 d · Czas trwania 4 d”) ze strefą czasową i aktualnym czasem sklepu.

### Informacje ogólne

- **Nazwa kampanii**: etykieta wewnętrzna, na przykład „Boże Narodzenie 2026" lub „Black Friday". Nigdy nie jest pokazywana odwiedzającym.
- **Włączona**: przełącznik główny. Wyłączona kampania nigdy nie jest wyświetlana, nawet w obrębie swojego zakresu dat.
- **Priorytet**: liczba całkowita. Przy nakładaniu się kampanii wygrywa ta z najwyższym priorytetem. Zostaw 0, jeśli prowadzisz tylko jedną kampanię naraz.

### Daty

Pola **Data rozpoczęcia** i **Data zakończenia** używają natywnego selektora daty i godziny, z dokładnością do sekundy. Daty są interpretowane według czasu serwera Twojego sklepu.

Jeśli Twoja przeglądarka pokazuje pole tekstowe zamiast selektora, oczekiwany format to `RRRR-MM-DD GG:MM:SS`, na przykład `2026-11-27 00:00:00`.

## Coroczne powtarzanie

Zaznacz **Powtarzaj co roku**, aby kampania wracała automatycznie w tych samych terminach, rok po roku. Porównywane są tylko miesiąc, dzień i godzina: rok jest ignorowany.

Moduł natywnie obsługuje kampanie **przechodzące przez Nowy Rok**. Kampania od 20 grudnia do 6 stycznia działa bez zarzutu i uruchamia się ponownie każdej zimy, bez konieczności jej dublowania.

Dla kampanii powtarzalnej walidacja „data zakończenia po dacie rozpoczęcia" jest celowo wyłączona, ponieważ koniec może przypadać w następnym roku kalendarzowym.

## Dni i godziny

W zakładce Daty zaznacz **dni tygodnia**, w które kampania ma się wyświetlać, i w razie potrzeby **przedział godzinowy** (na przykład od 18:00 do 22:00). Przedział może przechodzić przez północ (od 22:00 do 02:00). Wszystkie dni zaznaczone i brak godzin: kampania działa bez przerwy w swoich datach.

Poza swoimi dniami lub godzinami kampania jest „Wstrzymana”, a lista pokazuje, kiedy wznowi działanie. Odliczanie na pasku wskazuje wtedy koniec dzisiejszego przedziału, a nie koniec kampanii.

![Harmonogram kampanii: daty, dni tygodnia i przedział godzinowy weekendowej wyprzedaży](https://www.datafirefly.com/wp-content/uploads/2026/10/harmonogram-kampanii-dni-godziny-themescheduler-pl.webp)

Wyprzedaż błyskawiczna w piątek i sobotę, od 18:00 do 22:00.

## Pasek u góry strony

Pole **Komunikat paska** (wielojęzyczne) wyświetla pasek u góry wszystkich stron. Akceptuje podstawowy HTML: linki, pogrubienie. Zostaw je puste, aby ukryć pasek.

Włącz **Pokaż odliczanie**, aby dodać licznik w czasie rzeczywistym do daty zakończenia kampanii, w formacie „12d 04:31:07". Dla kampanii powtarzalnej odliczanie automatycznie celuje w najbliższe wystąpienie daty zakończenia.

Kolory paska (tło i tekst) ustawia się w sekcji Paleta.

Od wersji 2.0.0 pasek wyświetla się **na samej górze strony**, nad nagłówkiem; trzy inne położenia pozostają dostępne. Uzupełniają go dwie opcje: **Odwiedzający mogą go zamknąć** (wybór jest zapamiętywany w ich przeglądarce dla tej kampanii) oraz **Widoczny podczas przewijania** (pasek pozostaje przypięty u góry ekranu; przyklejony nagłówek motywów takich jak Hummingbird ustawia się tuż pod nim).

Wskaźnik kontrastu sprawdza, czy tekst pozostaje czytelny na kolorze tła (próg WCAG 4,5:1). Jeśli kampania ma kod promocyjny, pojawia się on na pasku z przyciskiem **Kopiuj**.

![Ustawienia paska ogłoszeń z podglądem: treść, odliczanie, przypięty pasek, zamykanie i kontrola kontrastu](https://www.datafirefly.com/wp-content/uploads/2026/10/pasek-ogloszen-odliczanie-themescheduler-pl.webp)

Zakładka Pasek ogłoszeń i podgląd na żywo.

![Kampania świąteczna na telefonie: zamykany pasek ogłoszeń nad nagłówkiem](https://www.datafirefly.com/wp-content/uploads/2026/10/kampania-swiateczna-mobile-themescheduler-pl.webp)

Pasek na telefonie, nad nagłówkiem.

## Baner graficzny

Możesz wgrać **inny baner dla każdego języka**, z klikalnym linkiem i tekstem alternatywnym. Akceptowane formaty to jpg, png, gif i webp. Zalecana jest duża szerokość (na przykład 1920 × 300).

Pole **Pozycja banera** określa strefę szablonu, w której obraz się wyświetla:

- **Pasek górny: displayBanner**: pozycja domyślna, na samej górze strony.
- **Pod nagłówkiem, pełna szerokość: displayNavFullWidth**: tuż pod menu głównym.
- **Nad treścią: displayWrapperTop**: nad korpusem strony.

Jeśli baner się nie wyświetla, zwykle oznacza to, że Twój szablon nie obsługuje wybranego hooka. Po prostu wypróbuj inną pozycję z listy.

![Baner sezonowy dla każdego języka z linkiem, tekstem alternatywnym, położeniem i blokiem strony głównej](https://www.datafirefly.com/wp-content/uploads/2026/10/baner-sezonowy-dla-jezyka-themescheduler-pl.webp)

Jeden baner na język albo ten sam obraz dla wszystkich języków.

## Paleta kolorów

Kampania udostępnia siedem kolorów: podstawowy, dodatkowy, linki, tło nagłówka, tło stopki, tło paska i tekst paska.

Te siedem wartości jest **zawsze eksponowanych** jako zmienne CSS (`--dfts-primary`, `--dfts-secondary` itd.), które Twój szablon lub własny CSS mogą ponownie wykorzystać.

Włącz **Zastosuj paletę do szablonu**, aby moduł sam nadał te kolory przyciskom, linkom, nagłówkowi i stopce. Zostaw opcję wyłączoną, jeśli wolisz sterować oprawą wyłącznie przez zmienne CSS i własny arkusz stylów.

## Efekty wizualne

Pole **Efekt wizualny** oferuje sześć animacji w czystym JavaScript, rysowanych na pełnoekranowym canvasie: śnieg, konfetti, serca, jesienne liście, migoczące gwiazdy i fajerwerki. Wybierz **Brak**, aby wyłączyć efekt.

**Intensywność** (niska, średnia, wysoka) reguluje gęstość cząsteczek. Liczba cząsteczek jest ograniczona, aby chronić wydajność.

Efekty ładują się tylko wtedy, gdy kampania jest aktywna. Wyłączają się automatycznie dla odwiedzających z włączoną systemową preferencją „ograniczenie ruchu" i wstrzymują się, gdy karta przeglądarki nie jest widoczna.

Animację uzupełniają dwa ustawienia: **Zatrzymaj po** (wygasa po podanej liczbie sekund na każdej stronie; 0 = bez limitu) oraz **Także na urządzeniach mobilnych** (wyłącz, aby nie animować ekranów węższych niż 768 px).

![Animacja śniegu, konfetti lub fajerwerków z intensywnością, czasem trwania i opcją mobilną](https://www.datafirefly.com/wp-content/uploads/2026/10/animacja-snieg-konfetti-themescheduler-pl.webp)

Zakładka Animacja: efekt, intensywność, czas trwania i telefony.

## Blok na stronie głównej i własny CSS

Pole **Blok strony głównej** (wielojęzyczne, edytor wizualny) wyświetla dowolną treść HTML na stronie głównej przez cały czas trwania kampanii, idealne na ofertę, rozbudowany pasek promocyjny lub komunikat sezonowy.

Pole **Własny CSS** pozwala pójść dalej. CSS jest oczyszczany przed wstrzyknięciem (próby wyjścia poza kontener stylu są neutralizowane) i ładowany tylko wtedy, gdy kampania jest aktywna. Możesz w nim używać zmiennych `--dfts-*`.

## Kod promocyjny i reguła koszyka

W zakładce **Kod promocyjny** wpisz kod do wyświetlenia na pasku albo wybierz **powiązaną regułę koszyka** spośród tych, które mają kod: kod zostanie wtedy uzupełniony automatycznie. Możesz też **utworzyć nową regułę koszyka** przy zapisie (procent, kwota z VAT lub darmowa dostawa, jedno użycie na klienta), a potem dopracować ją w Katalog > Rabaty.

Z opcją **Synchronizuj z kampanią** reguła przejmuje daty kampanii i jest włączana lub wyłączana razem z nią. W kampanii corocznej jej daty przechodzą na kolejny rok, gdy otworzysz stronę modułu lub zapiszesz kampanię. Karta podsumowuje powiązaną regułę: kod, rabat, status, daty i liczbę zamówień.

![Kod promocyjny powiązany z regułą koszyka PrestaShop, utworzoną i zsynchronizowaną z datami kampanii](https://www.datafirefly.com/wp-content/uploads/2026/10/kod-promocyjny-regula-koszyka-themescheduler-pl.webp)

Kod promocyjny i powiązana reguła koszyka.

## Kierowanie

Zakładka **Kierowanie** ogranicza kampanię do wybranych stron (wszystkie, tylko strona główna lub wszystkie oprócz koszyka i zamówienia) oraz do wybranych grup klientów (niezalogowani odwiedzający należą do grupy „Odwiedzający”). Jeśli kampania o wyższym priorytecie nie dotyczy danej strony lub odwiedzającego, przejmuje ją kolejna trwająca kampania.

![Kierowanie kampanii według stron i grup klientów](https://www.datafirefly.com/wp-content/uploads/2026/10/kierowanie-kampanii-strony-grupy-themescheduler-pl.webp)

Kierowanie według stron i grup klientów.

## Bezpieczny podgląd

Każda kampania ma link podglądu chroniony unikalnym tokenem o długości 32 znaków. Z listy kampanii kliknij przycisk **Preview**: sklep otwiera się z zastosowaną oprawą kampanii, dokładnie tak, jak zobaczą ją odwiedzający w dniu premiery.

Podgląd utrzymuje się podczas nawigacji: możesz przeglądać wszystkie strony sklepu. Stały pasek „Podgląd: {nazwa}, Wyjdź" wyświetla się w lewym dolnym rogu; kliknij **Wyjdź**, aby wrócić do normalnego widoku.

Podgląd jest całkowicie niewidoczny dla odwiedzających: aktywuje się tylko z tajnym linkiem zawierającym właściwy token. Możesz więc sprawdzić bożonarodzeniową oprawę w środku sierpnia albo udostępnić link klientowi do akceptacji, nie zmieniając niczego dla publiczności.

![Bezpieczny podgląd kampanii w sklepie przed datą rozpoczęcia](https://www.datafirefly.com/wp-content/uploads/2026/10/bezpieczny-podglad-kampanii-sklep-themescheduler-pl.webp)

Podgląd w sklepie z paskiem „Podgląd” w lewym dolnym rogu.

## Planer roczny

Na górze listy kampanii zaplecze wyświetla syntetyczny pulpit: liczbę kampanii, kampanie włączone, kampanię aktualnie „live" oraz najbliższą kampanię do uruchomienia z liczbą pozostałych dni.

Poniżej **oś czasu na dwanaście miesięcy** przedstawia każdą kampanię jako kolorowy pasek umieszczony według jej dat. Pionowy znacznik wskazuje bieżący dzień, kampanie powtarzalne przechodzące przez Nowy Rok są pokazane w dwóch segmentach, a każdy pasek jest klikalny i otwiera bezpośrednio edycję kampanii.

Każda kampania ma status: **Trwa** (z pozostałym czasem), **Zaplanowana** (z czasem do jej pierwszego rzeczywistego przedziału), **Wstrzymana**, **Ukryta**, gdy wygrywa kampania o wyższym priorytecie, **Zakończona** lub **Wyłączona**. Panel sygnalizuje nakładanie się kampanii w ciągu najbliższych dwunastu miesięcy i wskazuje, która jest wyświetlana, z linkiem do jej edycji. Planer można przeglądać rok po roku.

![Panel kampanii sezonowych: trwająca i następna kampania, nakładanie się i planer roczny](https://www.datafirefly.com/wp-content/uploads/2026/10/panel-kampanii-planer-roczny-themescheduler-pl.webp)

Panel, nakładanie się kampanii i planer roczny.

![Lista kampanii ze statusem, okresem, zawartością i działaniami zbiorczymi](https://www.datafirefly.com/wp-content/uploads/2026/10/lista-kampanii-status-themescheduler-pl.webp)

Lista kampanii: status, okres, zawartość i wyniki.

## Wyniki

Zakładka **Wyniki** pokazuje dla każdej kampanii: wizyty, podczas których była widoczna (jedna na sesję przeglądarki), kliknięcia w linki paska, banera i bloku strony głównej, współczynnik kliknięć, skopiowane kody, zamknięcia paska oraz ważne zamówienia z kodem powiązanej reguły. Wykres obejmuje ostatnie 30 dni, a lista powtarza te liczby w kolumnie.

Te liczniki są anonimowe: bez plików cookie i bez danych osobowych. Podglądy i boty nie są liczone, podobnie jak odwiedzający blokujący JavaScript.

![Wyniki kampanii: wizyty, kliknięcia, współczynnik kliknięć, skopiowane kody i zamówienia z kodem](https://www.datafirefly.com/wp-content/uploads/2026/10/wyniki-kampanii-wizyty-klikniecia-themescheduler-pl.webp)

Zakładka Wyniki z 30 dni.

## Duplikowanie, eksport, import

Z poziomu listy akcja **Duplikuj** tworzy kopię kampanii z nowym tokenem podglądu, domyślnie wyłączoną, której obrazy banerów są fizycznie kopiowane: usunięcie jednej nigdy nie wpływa na drugą. Powiązania ze sklepami są zachowywane.

Przycisk **Eksport JSON** (na pasku narzędzi) pobiera wszystkie Twoje kampanie do pliku. Formularz **Import JSON** na pulpicie pozwala wgrać ten plik na innym sklepie. Zaimportowane kampanie przychodzą domyślnie wyłączone; obrazy banerów nie są zawarte w eksporcie.

## Multisklep i wielojęzyczność

W kontekście multisklepu każda kampania jest przypisywana do wybranych sklepów przez sekcję **Powiązanie ze sklepem** formularza. Kampania wyświetla się tylko w sklepach, do których jest przypisana.

Komunikat paska, baner (obraz, link, tekst alternatywny) i blok strony głównej są **tłumaczone per język**. Uzupełnij każdy język z zakładek językowych formularza.

## Integracja dla twórców szablonów

Gdy kampania jest aktywna, moduł dodaje klasy do znacznika `body`: `dfts-active`, `dfts-campaign-{id}`, `dfts-effect-{efekt}` oraz `dfts-preview` w trybie podglądu. Możesz dzięki temu precyzyjnie celować swoim CSS.

Zdarzenie JavaScript `dfts:ready` jest również emitowane na `document` po zainicjowaniu skryptu, ze szczegółową konfiguracją kampanii. W połączeniu ze zmiennymi CSS `--dfts-*` pozwala to na integracje szyte na miarę bez ingerencji w moduł.

## Wydajność

Moduł jest z założenia lekki. Ustalenie aktywnej kampanii mieści się w jednym zapytaniu SQL memoizowanym na wyświetlenie. CSS i JavaScript frontu ładują się tylko wtedy, gdy kampania jest rzeczywiście aktywna. Nie jest używany żaden override klas: wyłącznie natywne hooki PrestaShop.

## Rozwiązywanie problemów

### Baner się nie wyświetla

Twój szablon prawdopodobnie nie obsługuje wybranego hooka pozycji. Zmień **Pozycję banera** na inną wartość z listy.

### Kolory nie są stosowane

Sprawdź, czy opcja **Zastosuj paletę do szablonu** jest włączona. Jeśli tak, a niektóre elementy pozostają bez zmian, Twój szablon używa specyficznych selektorów: dodaj kilka reguł w polu własnego CSS, opierając się na zmiennych `--dfts-*`.

### Efekt się nie animuje

Animacje są celowo wyłączane dla odwiedzających z włączonym ograniczeniem ruchu w systemie operacyjnym i wstrzymywane, gdy karta jest w tle. Sprawdź też, czy wybrany jest efekt inny niż „Brak".

### Dwie kampanie nachodzą na siebie

To oczekiwane zachowanie: wyświetla się tylko jedna kampania, ta z najwyższym priorytetem. Dostosuj priorytety, aby wybrać, która ma pierwszeństwo.

### Pasek zmienił miejsce po aktualizacji

W wersji 1.x pasek był wstawiany do nagłówka motywu, co psuło układ Classic i Hummingbird. Wersja 2.0.0 wyświetla go na samej górze strony. Aby wrócić do dawnego położenia, wybierz „W nagłówku (displayTop)” w zakładce Pasek ogłoszeń.

### Kampania nie pojawia się o pewnych godzinach

Sprawdź dni tygodnia i przedział godzinowy w zakładce Daty: poza nimi kampania jest „Wstrzymana”. Sprawdź też kierowanie według stron i grup klientów.

### Kampania nie uruchamia się o zaplanowanej godzinie

Daty są interpretowane według czasu serwera, który może różnić się od Twojego czasu lokalnego. Sprawdź strefę czasową sklepu w ustawieniach PrestaShop.
