Slider produktów z wybranej kolekcji z osobną grafiką desktop/RWD i pełną konfiguracją kafelka produktu.
![Miniatura modułu: [im2] Kolekcja slider + obrazek](/crm/uploads/instructions/module-thumbnails/mod_597a7522a06fc33cecc8/thumbnail-ce78290907.png)
Kolekcja slider + obrazek wyświetla produkty z wybranej kolekcji jako slider i łączy je z osobną grafiką promującą kolekcję. Na większych ekranach grafika znajduje się po lewej stronie, a poniżej 980 px źródłowy CSS przełącza moduł na układ jednokolumnowy z osobną grafiką RWD nad produktami.
Moduł produkcyjny pobiera kolekcję i produkty przez ObjectApi. Instrukcja nie łączy się ze sklepem — po prawej używa realistycznej, syntetycznej kolekcji z 12 produktami, dzięki czemu od razu możesz sprawdzić wszystkie ustawienia wizualne.
Formularz po lewej odwzorowuje kolejność i typy pól źródłowego modułu. Przełączaj widok Desktop / Laptop / Tablet / Mobile, aby zobaczyć odpowiedni breakpoint slidera oraz zmianę grafiki kolekcji.
Na szerokościach powyżej 980 px moduł ma dwie kolumny: grafikę kolekcji po lewej i slider produktów po prawej. Przy szerokości do 980 px grafika desktopowa jest ukrywana, a moduł pokazuje Grafikę kolekcji RWD nad listą produktów.
Moduł pobiera maksymalnie 16 produktów. Liczbę kafelków widocznych jednocześnie ustawiasz osobno dla telefonu, tabletu, laptopa i desktopu. Strzałki slidera pojawiają się tylko wtedy, gdy liczba produktów przekracza liczbę widocznych kafelków; na telefonie dodatkowo obowiązuje opcja Włącz strzałki nawigacji.
Druga sekcja przekazuje ustawienia bezpośrednio do standardowego makra Shopera product_tile. Możesz włączyć m.in. producenta, SKU, cenę regularną przy promocji, rabat procentowy, cenę jednostkową, informacje podatkowe, dostępność i przycisk dodawania do koszyka.
Źródłowy Twig korzysta z ObjectApi.getCollection() oraz ObjectApi.getProductsInCollection(). Sam moduł renderuje się tylko wtedy, gdy wybrana kolekcja zawiera produkty. Podgląd w instrukcji nie odpytuje ObjectApi i dlatego pole ID kolekcji jest oznaczone jako S; pozostałe edytowalne pola wpływają na wynik modułu i są oznaczone jako LIVE.
Pokazuje skróconą listę pierwszych atrybutów produktu i link do pełnej specyfikacji. Możesz włączyć moduł, ustawić liczbę widocznych cech oraz własny tekst odnośnika.
![Miniatura modułu: [im2] Skrócone atrybuty](/crm/uploads/instructions/module-thumbnails/mod_b0e41490089f6307ba64/thumbnail-caf494a980.png)
Moduł Skrócone atrybuty pokazuje na karcie produktu kilka najważniejszych cech w zwartej formie. Pod listą może wyświetlić odnośnik, który po kliknięciu płynnie przewija klienta do pełnej specyfikacji produktu.
Moduł pobiera dane bezpośrednio z aktualnego produktu przez Object API. Nie wybierasz tutaj ręcznie nazw ani wartości cech. Jeśli produkt nie ma żadnych grup atrybutów, moduł się nie wyświetli.
Poniższy symulator odwzorowuje wszystkie trzy pola z konfiguracji modułu. Każde z nich jest LIVE, ponieważ zgodnie ze źródłem bezpośrednio zmienia renderowany wynik.
Moduł przechodzi przez grupy atrybutów produktu i pokazuje pierwsze pozycje aż do wartości ustawionej w polu Maksymalna ilość wyświetanych atrybutów. Limit dotyczy całej skróconej listy, a nie każdej grupy osobno.
W symulatorze użyto sześciu przykładowych cech, dzięki czemu możesz od razu sprawdzić wartości od 0 wzwyż.
W źródle warunek brzmi: przycisk pojawia się, gdy liczba wyrenderowanych atrybutów jest równa ustawionemu limitowi. Jeżeli produkt ma dokładnie 2 atrybuty i ustawisz limit 2, odnośnik nadal się pojawi. To jest zachowanie obecnego kodu modułu.
Kliknięcie tekstu pod skróconymi atrybutami wyszukuje na stronie moduł z atrybutem data-module-name="product_attributes" i przewija do niego płynnie z przesunięciem około 150 px. W podglądzie po prawej możesz kliknąć przycisk i zobaczyć tę akcję na syntetycznej pełnej specyfikacji.
Moduł korzysta z natywnego makra Shopera product_attribute. Sam wygląd w źródle jest prosty: obramowanie górne i dolne, odstęp 20 px oraz atrybuty w jednym ciągu z dwukropkiem po nazwie cechy. JavaScript ponownie podpina obsługę przewijania po zdarzeniu PageManager.loaded.
Grafika funkcyjna z opcjonalnym nagłówkiem i linkiem, przeznaczona do budowania wizualnych kafli prowadzących do ważnych sekcji sklepu.
![Miniatura modułu: [im2] ⭐ Grafiki funkcyjne ⭐](/crm/uploads/instructions/module-thumbnails/mod_0aa7ca291438ba816148/thumbnail-fb2b590ab0.png)
Grafiki funkcyjne pozwalają wyświetlić grafikę z opcjonalnym nagłówkiem i odnośnikiem. Moduł sprawdzi się jako kafel promujący kategorię, usługę, korzyść lub inną ważną sekcję sklepu.
Pole Kolor ramki aktywnej grafiki istnieje w konfiguracji, ale aktualny Twig go nie wykorzystuje. Jego zmiana nie wpływa obecnie na front modułu.
Moduł renderuje pojedynczy kontener .modouther z obrazem oraz opcjonalnym blokiem .moditeminfo. Źródło nie zawiera własnego JavaScriptu.
Moduł wyszukuje dostępne produkty o tej samej nazwie z dopiskiem OUTLET i pokazuje je na karcie produktu jako listę tańszych egzemplarzy z ceną, zdjęciem i stanem produktu.
![Miniatura modułu: [im2]⭐Outlet](/crm/uploads/instructions/module-thumbnails/mod_baeab1b31b79637a994c/thumbnail-b2c945e384.png)
Moduł Outlet automatycznie szuka tańszych egzemplarzy odpowiadających aktualnie oglądanemu produktowi. Jeżeli znajdzie dostępne produkty z dopiskiem OUTLET w nazwie, pokazuje sekcję „Kup taniej w outlecie!” z ceną, zdjęciem oraz wartością atrybutu „Stan produktu”.
isBuyable = false są pomijane.Moduł porównuje nazwę produktu bazowego z nazwą znalezionych produktów po usunięciu spacji i słowa OUTLET. Nazwa egzemplarza outletowego powinna więc bazować na tej samej nazwie produktu.
Poniższe środowisko testowe korzysta z syntetycznych danych produktu i wyników SearchApi. Możesz przełączać scenariusze, zmienić nazwę produktu albo słowo kluczowe i od razu zobaczyć, czy źródłowy mechanizm znalazłby produkty outletowe.
Dla każdego dopasowanego produktu moduł pobiera główne zdjęcie, cenę podstawową, adres produktu i atrybut Stan produktu. Element jest oznaczony czerwonym badge’em OUTLET. Jeżeli nie ma żadnego pasującego produktu, sekcja nie jest dodawana.
source/config.json oraz source/translations.json są puste. Teksty i logika są obecnie wpisane bezpośrednio w module.js, m.in. słowo OUTLET, tytuł sekcji i nazwy atrybutów. Dlatego instrukcja nie pokazuje fikcyjnego formularza ustawień po lewej stronie.
| Element w kodzie | Wartość źródłowa | Znaczenie |
|---|---|---|
| outletProductsSet.status | 1 | Flaga dodatku zapisana na stałe w JS |
| outletProductsSet.name | OUTLET | Słowo kluczowe używane do dopasowania nazw |
| outletProductsSet.title | Kup taniej w outlecie! | Nagłówek listy produktów |
| outletProductsSet.attributes[0] | Stan produktu | Atrybut pokazywany na liście |
| outletProductsSet.toggledTitle | Ten produkt możesz kupić taniej w outlecie | Nagłówek przygotowanego panelu bocznego |
| outletProductsSet.toggledTxt | Tekst informacyjny o outlecie | Treść przygotowanego panelu bocznego |
Moduł pobiera nazwę aktualnego produktu z .product-section-title i jego ID z elementu .outletstorefront. Następnie używa SearchApi, a dla każdego dopasowania ProductFetcherApi. Jeśli ProductFetcher nie jest aktywny, kod rejestruje funkcję dynamicznie przez FeatureSystemApi.
W przesłanym źródle tworzony jest także DOM panelu #rightsection z maską, przyciskiem zamknięcia i tekstem informacyjnym. W tej wersji module.js nie zawiera jednak kodu, który otwiera ten panel lub wstawia do niego kliknięty produkt, dlatego instrukcja nie symuluje tej funkcji jako działającej.
Ikona, numer telefonu i adres e-mail wyświetlane w nagłówku sklepu.
![Miniatura modułu: [im3] ⭐ Dane kontaktowe - nagłówek ⭐](/crm/uploads/instructions/module-thumbnails/mod_25fc9144b76b5de14175/thumbnail-6cba77bda1.png)
Moduł wyświetla w nagłówku sklepu ikonę, numer telefonu i adres e-mail. Telefon oraz e-mail są od razu klikalne — prowadzą odpowiednio do linków tel: i mailto:.
Możesz też ustawić kolor obu odnośników, np. zgodny z głównym kolorem szablonu.
Pola telefonu i e-maila obsługują tłumaczenia, więc w sklepie wielojęzycznym możesz podać inne wartości dla poszczególnych wersji językowych.
Po lewej znajduje się formularz odwzorowujący konfigurację modułu w Shoperze. Wszystkie cztery ustawienia są LIVE — ich zmiana od razu wpływa na prawy podgląd.
tel:.mailto:.Źródłowy Twig renderuje obraz z moduleConfig.graphicImage.paths.webp, telefon z moduleConfig.IMSocialTel, e-mail z moduleConfig.IMSocialEmail i kolor z moduleConfig.color. Moduł nie posiada własnego JavaScriptu.
Logotyp i podstawowe dane kontaktowe firmy wyświetlane w stopce sklepu.
![Miniatura modułu: [im3] ⭐ Dane kontaktowe - stopka ⭐](/crm/uploads/instructions/module-thumbnails/mod_15fb57ebcc1b88970369/thumbnail-be4fa84cc1.png)
Moduł wyświetla w stopce logotyp oraz dane kontaktowe firmy. Najczęściej użyjesz go do pokazania nazwy firmy, adresu, telefonu, adresu e-mail lub innych podstawowych informacji kontaktowych.
W aktualnej wersji moduł renderuje logotyp i treść z edytora WYSIWYG w jednym bloku stopki.
Logo oraz treść obsługują tłumaczenia, więc w sklepie wielojęzycznym mogą mieć osobne wersje językowe.
W konfiguracji modułu istnieje pole Tytuł, ale aktualny Twig go nie renderuje. Zmiana tego pola nie ma więc wpływu na stopkę na froncie. W symulatorze jest ono celowo oznaczone jako S.
Po lewej stronie znajduje się formularz odwzorowujący pola z edytora Shoper. Po prawej widzisz efekt modułu w stopce. Zmiana logotypu i zapis treści WYSIWYG aktualizują podgląd od razu.
W treści stopki możesz wpisać np.:
Treść możesz formatować w edytorze WYSIWYG, np. pogrubić nazwę firmy albo rozdzielić dane na kolejne linie.
Źródłowy Twig renderuje obraz z moduleConfig.image.paths.webp i treść z moduleConfig.footerinfo|raw. Pole title nie jest obecnie używane w szablonie modułu. Moduł nie posiada własnego JavaScriptu.
Lista dodatkowych produktów na karcie produktu z ilością, automatyczną sumą, przypisaniem po produkcie lub kategorii oraz kolekcją jako źródłem danych.
![Miniatura modułu: [im3] ⭐ Dodatkowe produkty na karcie produktu ⭐](/crm/uploads/instructions/module-thumbnails/mod_004a80fdad1d63c57b89/thumbnail-f97cb8aa1b.png)
Moduł pozwala wyświetlić na karcie produktu listę dodatkowych produktów do dokupienia. Klient może zwiększać ilość wybranych dodatków przyciskami minus/plus, a moduł na bieżąco przelicza sumę produktu bazowego i wybranych dodatków.
Listę dodatków można przypisać na dwa sposoby: do konkretnego produktu albo do całej kategorii produktu. Same dodatki są pobierane z wybranej kolekcji Shopera.
Te pola korzystają z ObjectApi i wybierają prawdziwe dane sklepu. Symulator nie łączy się z Twoim sklepem, dlatego dla nich pokazuje dane demonstracyjne. Wszystkie pola wpływające na HTML/CSS modułu są oznaczone jako LIVE.
Konfigurator odwzorowuje kolejność źródłowego config.json. Po prawej masz syntetyczną kartę produktu, na której od razu widać listę dodatków, rozwijanie oraz przeliczanie sumy.
Każdy produkt z kolekcji jest renderowany jako osobny wiersz ze zdjęciem, nazwą, ceną oraz kontrolką ilości. JavaScript pilnuje, aby ilość nie spadła poniżej zera i po każdej zmianie przelicza podsumowanie.
W źródle suma startuje od ceny produktu bazowego i dodaje cena dodatku × wybrana ilość. Po dodaniu głównego produktu do koszyka moduł obsługuje również dołożenie zaznaczonych dodatków.
Pole maksymalna wysokość listy przed rozwinięciem ustala wysokość zwiniętej listy. Jeżeli produktów jest więcej, JavaScript dodaje przycisk rozwijania z tekstami ustawionymi osobno w repeaterze. Po rozwinięciu lista dopasowuje wysokość do całej zawartości.
Kolory mogą korzystać z wartości HEX albo ze zmiennych dostępnych w Shoperze, np. @primaryColor. W symulatorze taka zmienna jest odwzorowywana syntetycznym kolorem głównym.
Przy wielu regułach pamiętaj, że źródłowy Twig sprawdza osobno dopasowanie po produkcie i po kategorii. Jeżeli dana reguła nie pasuje do aktualnej karty produktu, jej lista nie zostanie wyrenderowana.
Grafika promocyjna wstawiana pomiędzy kafelki produktów, z własnym linkiem, ALT/TITLE i pozycją określaną numerem produktu.
![Miniatura modułu: [im3] ⭐ Grafika na liście produktów ⭐](/crm/uploads/instructions/module-thumbnails/mod_14cc4970cf2b6c5c67cd/thumbnail-e1ce5ac731.png)
Moduł wstawia grafikę pomiędzy kafelki produktów na liście kategorii lub wyników produktów. Możesz wykorzystać ją jako baner promocyjny, odnośnik do kampanii albo wyróżnienie konkretnej akcji.
Grafika nie zastępuje produktu. JS przenosi ją jako osobny element za wskazany kafelek.
Zmień ustawienia po lewej stronie. Po prawej od razu zobaczysz, gdzie grafika trafi na przykładowej liście produktów.
| Wartość | Efekt |
|---|---|
| 1 | Grafika za pierwszym produktem |
| 2 | Grafika za drugim produktem |
| 4 | Grafika za czwartym produktem |
| Liczba większa niż liczba produktów | Grafika zostanie przesunięta za ostatni dostępny produkt |
Źródłowy Twig tworzy blok .im-imagelist i zapisuje pozycję jako moduleposition - 1. JS po zdarzeniu PageManager.loaded znajduje kafelki .product-tile, ogranicza indeks do zakresu aktualnej listy i przenosi grafikę bezpośrednio za wskazany produkt. Hover powiększa obraz do scale(1.05).
Kafelkowa lista kategorii z grafiką, linkiem i nazwą każdej pozycji oraz osobną liczbą kolumn dla desktopu, laptopa, tabletu i telefonu.
![Miniatura modułu: [im3] ⭐ Lista kafelkowa kategorii ⭐](/crm/uploads/instructions/module-thumbnails/mod_dbf661cf6b24456cd95d/thumbnail-f94ba567b7.png)
Lista kafelkowa kategorii tworzy czytelną siatkę graficznych odnośników do kategorii. Każdy kafelek może mieć własną grafikę, nazwę, link, ALT i tytuł obrazu.
Moduł automatycznie zmienia liczbę kolumn zależnie od szerokości ekranu, dlatego ten sam zestaw kategorii możesz ułożyć inaczej na komputerze, laptopie, tablecie i telefonie.
Najlepiej używać grafik o podobnych proporcjach i rozmiarach. Dzięki temu siatka wygląda równo, a efekt powiększenia grafiki po najechaniu pozostaje spójny dla wszystkich kategorii.
Poniższe środowisko testowe odwzorowuje formularz modułu oraz rzeczywiste zachowanie z Twig/CSS. Grafiki i kategorie są syntetyczne — służą tylko do sprawdzania konfiguracji bez połączenia ze sklepem.
Źródło używa czterech progów układu. Powyżej 1280 px działa ustawienie dla komputerów; do 1280 px — laptop; do 1080 px — tablet; do 767 px — telefon.
Przykładowo możesz ustawić 5 / 4 / 3 / 2, aby na dużym ekranie pokazać pięć kategorii w rzędzie, a na telefonie dwie.
Moduł nie posiada własnego JavaScriptu — układ i hover są realizowane przez Twig oraz CSS. Lista jest renderowana tylko wtedy, gdy images zawiera pozycje. Dodatkowe klasy z pola Klasa CSS są dopisywane bezpośrednio do wrappera modułu.
Globalne ustawienia wyglądu boksów produktowych: nazwy, ceny, krótki opis, warianty, etykiety, przyciski i mini galeria.
![Miniatura modułu: [im3] ⭐ Lista produktów - Ustawienia globalne ⭐](/crm/uploads/instructions/module-thumbnails/mod_c89df03a644187afec16/thumbnail-fc73687205.png)
Moduł ustawia wspólny wygląd i zachowanie boksów produktów na listach w sklepie. W jednym miejscu możesz skonfigurować nazwę produktu, wysokość ceny, krótki opis, warianty, etykiety, przycisk akcji oraz mini galerię zdjęć.
Podgląd używa syntetycznych produktów, dzięki czemu wszystkie opcje da się sprawdzić bez danych z realnego sklepu. Najedź na pierwszy produkt albo użyj przycisku Test hover. Przy włączonej mini galerii pojawią się miniatury. Jeżeli wariantów jest za dużo i działa automatyczne zwijanie, kliknij +N, aby sprawdzić rozwijaną chmurkę.
Zmiany w tym module dotyczą boksów produktowych na listach, a nie pojedynczego produktu. W prawym podglądzie pokazane są trzy różne produkty, żeby łatwiej ocenić spójność ustawień.
Po włączeniu mini galerii zdjęcia pojawiają się w dolnej części kafelka podczas hover. Pole Ilość wyświetlanych miniatur steruje limitem; jeżeli zdjęć jest więcej, ostatnią pozycję zastępuje kafelek +N.
Wyświetla poziomy pasek grafik / logotypów metod płatności w zaokrąglonym obramowaniu.
![Miniatura modułu: [im3] ⭐ Metody płatności ⭐](/crm/uploads/instructions/module-thumbnails/mod_21cb9cb56fffa6aa1a10/thumbnail-43648c48da.png)
Moduł Metody płatności wyświetla poziomy pasek grafik, np. logotypów dostępnych form płatności. Każdy element dodajesz w repeaterze jako osobną pozycję.
Poniższy konfigurator odwzorowuje źródłowy repeater i ma od razu wypełnione syntetyczne dane testowe, żeby można było zobaczyć działanie modułu bez przygotowywania własnych grafik.
Kontener modułu ma w źródle obramowanie 2 px dashed #EEEEEE, padding 15 px 30 px i promień 39 px. Elementy są ustawione przez flex z justify-content: space-between i odstępem 5 px.
CSS źródłowy definiuje powiększenie grafiki na hover dla selektora li, natomiast Twig renderuje elementy jako div.module-payments-item. Dlatego instrukcja nie symuluje efektu powiększenia, którego aktualny markup nie uruchamia.
Szeroki moduł informacyjny z tłem parallax/fixed, nakładką, pozycjonowanym boxem treści, typografią i CTA.
![Miniatura modułu: [im3] ⭐ Moduł informacyjny - paralax ⭐](/crm/uploads/instructions/module-thumbnails/mod_bedc9682f78b03be2802/thumbnail-3b2fde4ebf.png)
Moduł informacyjny — parallax tworzy szeroką sekcję z grafiką w tle, opcjonalną nakładką, boxem z tytułem i podtytułem oraz przyciskiem CTA. Może służyć jako baner promocyjny, komunikat o dostawie, wyróżnienie kategorii albo sekcja wizerunkowa.
Źródłowy Twig renderuje moduł tylko wtedy, gdy jednocześnie Włącz moduł jest aktywne i pole Unikalna klasa modułu nie jest puste. Dla każdej kopii modułu najlepiej użyć innej klasy.
Symulator odwzorowuje ustawienia Shopera. Wszystkie pola wpływające na output są oznaczone jako LIVE. Jedynym elementem S jest techniczny infobox o unikalnej klasie.
Opcja Włącz efekt fixed background przełącza właściwość CSS background-attachment pomiędzy fixed i scroll. Grafika jest dodatkowo ładowana leniwie przez źródłowy JavaScript, gdy sekcja znajdzie się w pobliżu viewportu.
Dla szerokości do 991 px źródło używa osobnej wysokości sekcji i osobnej pozycji tła. Padding obszaru treści jest wtedy ustawiony na stałe na 24 px 20 px, a box korzysta z pola Padding boxa na mobile zamiast czterech osobnych paddingów desktopowych.
Grafika tła jest przekazywana do atrybutu data-bg. Skrypt tworzy obiekt Image i ustawia background-image dopiero po wejściu sekcji w obszar około 300 px od viewportu. Po załadowaniu dodaje klasę is-bg-loaded. Moduł ponownie inicjalizuje lazy loading po zdarzeniu PageManager.loaded w Storefront.
Rozwijany blok treści z ustawianą wysokością złożoną, opcjonalnym scrollem i przyciskiem „Pokaż więcej / Pokaż mniej”.
![Miniatura modułu: [im3] ⭐ Moduł z rozwijalną treścią ⭐](/crm/uploads/instructions/module-thumbnails/mod_53400295af627672a84e/thumbnail-a7fd251496.png)
Moduł skraca dłuższą treść do ustalonej wysokości i dodaje pod nią przycisk Pokaż więcej. Po kliknięciu treść rozwija się do pełnej wysokości, a przycisk zmienia się na Pokaż mniej.
Sprawdza się m.in. przy długich opisach kategorii, treści SEO, poradnikach oraz dodatkowych informacjach, które mają być dostępne dla klienta, ale nie powinny od razu zajmować całej strony.
Ustaw Wysokość treści przed rozwinięciem tak, aby przed kliknięciem przycisku było widać sensowny fragment tekstu. W praktyce warto zacząć od ok. 180–260 px i dopasować wartość do swojej treści.
Poniższy podgląd odtwarza pola modułu z Shoper SVE oraz jego rzeczywiste zachowanie. Zmień wysokość, scroll, wygląd albo treść i od razu sprawdź efekt po prawej stronie. Przycisk Pokaż więcej / Pokaż mniej działa tak samo jak w źródłowym JavaScript.
Po załadowaniu modułu kontener .toggledmodule ma wysokość ustawioną w konfiguracji. Kliknięcie Pokaż więcej animuje wysokość do pełnego scrollHeight, a po zakończeniu animacji ustawia wysokość na auto. Dzięki temu późniejsze zmiany treści nie są ucinane.
Przy zwijaniu moduł wraca do skonfigurowanej wysokości. Na urządzeniach mobilnych przycisk jest centrowany.
Scroll: włączenie opcji dodaje klasę scrollon i ustawia pionowe przewijanie na kontenerze.
Wygląd treści: tryb „Tylko ustawienia edytora tekstu” dodaje fr-view resetcss. Tryb łączony pozwala korzystać również ze stylu aktywnego szablonu sklepu.
Klasa CSS: wpisane klasy są dołączane bezpośrednio do wrappera treści. Moduł sam nie definiuje dla nich wyglądu — muszą istnieć w CSS sklepu.
destroy(), dlatego w poprawnie działającym Storefront nie powinien duplikować obsługi.JavaScript działa jako obiekt ToggleModules. Moduł wyszukuje kontenery .toggledmodule oraz przycisk .toggle-btn, zapamiętuje wysokość złożoną i zarządza animacją height. Integracja ze Storefront ponownie inicjalizuje moduł po zdarzeniu PageManager.loaded i czyści bindingi przy PageManager.beforeDestroy.
Galeria produktu z miniaturami, pełnoekranowym podglądem oraz lokalnym filmem MP4 automatycznie pobieranym z pierwszego znacznika <video> w opisie produktu.
![Miniatura modułu: [im3] ⭐ Nowa galeria produktowa [mp4] ⭐](/crm/uploads/instructions/module-thumbnails/mod_47ea8cc3fcccb8f2940d/thumbnail-7cd059a456.png)
Moduł rozbudowuje standardową galerię produktu o lokalny film MP4. Film jest pobierany bezpośrednio z pierwszego znacznika <video> znalezionego w opisie produktu i dodawany do tej samej listy mediów co zdjęcia.
Możesz ustawić miejsce filmu w galerii, pozycję miniaturek, strzałki na desktopie i mobile, wysokość filmu oraz natywne przyciski sterowania.
src.Parser aktualnego modułu szuka pierwszego znacznika <video> i odczytuje wartość zapisaną w formie src="...".
<video src="/upload/twoj-film-produktu.mp4"></video>Symulator zawiera 6 syntetycznych zdjęć oraz przykładowy slajd MP4. Nie musisz podłączać ObjectApi ani prawdziwego filmu, żeby przetestować kolejność, miniatury, strzałki, controls i wysokość video.
Pozycja miniaturek działa na desktopie: po lewej, po prawej albo pod zdjęciem. Na mobile źródłowy slider miniaturek jest ukryty.
Kolejność video określa miejsce filmu względem zdjęć. Wartość 1 oznacza film przed pierwszym zdjęciem. Jeżeli wpiszesz numer większy niż liczba zdjęć, film zostanie dopisany na końcu.
Wysokość video działa na desktopie. Na ekranach do 575 px źródłowy CSS wymusza automatyczną wysokość filmu.
Pola Włącz automatyczne odtwarzanie video oraz Automatyczne zapętlanie wideo istnieją w konfiguracji, ale aktualny Twig/JS ich nie odczytuje. JavaScript sam ustawia muted, playsinline, preload="metadata" i loop, a następnie próbuje odtwarzać video, kiedy co najmniej 60% slajdu jest widoczne.
Po opuszczeniu widocznego obszaru film jest pauzowany i jego czas jest resetowany do początku. To samo dzieje się po ukryciu karty przeglądarki. Pole Szerokość filmiku również nie jest aktualnie używane przez kod renderujący.
<video>.src="..." elementu video.<source> wewnątrz video zamiast atrybutu src na samym <video>, obecny parser go nie odczyta.Moduł buduje wspólną listę mediaList ze zdjęć produktu i opcjonalnego video. Miniatura filmu jest oznaczona ikoną play. JavaScript LocalVideoAutoplay używa IntersectionObserver z progiem 0.6, obserwuje elementy [data-video-slide] i integruje się ze Storefront przez zdarzenia PageManager.loaded oraz PageManager.beforeDestroy.
Galeria produktu z miniaturami, pełnoekranowym podglądem oraz filmem YouTube automatycznie pobieranym z iframe w opisie produktu.
![Miniatura modułu: [im3] ⭐ Nowa galeria produktowa [Youtube] ⭐](/crm/uploads/instructions/module-thumbnails/mod_e5f0e46dc891c669f690/thumbnail-ffa2c2f184.png)
Nowa galeria produktowa [Youtube] zastępuje standardową galerię produktu wersją, która może wstawić film YouTube pomiędzy zdjęcia produktu. Klient nadal korzysta z miniaturek, strzałek i pełnoekranowego podglądu zdjęć.
<iframe src="https://www.youtube.com/embed/VIDEO_ID" title="Film produktu" allowfullscreen></iframe>Nie potrzebujesz prawdziwego produktu ani realnego filmu do sprawdzenia ustawień. Symulator ma 6 syntetycznych zdjęć i testowy slajd YouTube, więc od razu możesz klikać miniatury, zmieniać pozycję filmu i sprawdzać strzałki.
W aktualnym Twig zaznaczenie Włącz lub wyłącz przyciski z video dodaje do adresu YouTube parametr controls=0, czyli ukrywa standardowe kontrolki odtwarzacza. Instrukcja celowo pokazuje dokładnie to zachowanie.
Autoplay: Twig dodaje autoplay=1&mute=1 po zaznaczeniu pola. Niezależnie od tego JavaScript modułu obserwuje slajd z filmem przez IntersectionObserver i ładuje widoczne video z autoplay.
Loop: dodawane są parametry loop=1 i playlist=ID_FILMU.
src zawiera fragment embed/.Config zawiera pole Szerokość filmiku w pixelach, ale aktualny Twig nie używa moduleConfig.videowidth. Iframe ma na sztywno width: 100%. Z tego powodu pole jest w symulatorze oznaczone jako S, a nie LIVE.
Elastyczna lista produktów do Shoper Storefront z responsywną liczbą kolumn, rozbudowanym kafelkiem produktu, przełącznikiem pełnej szerokości oraz banerami wstawianymi między produkty — domyślnymi i przypisanymi do kategorii.
![Miniatura modułu: [im3] ⭐ Nowa lista produktowa ⭐](/crm/uploads/instructions/module-thumbnails/mod_81e8fd62090fb9dd5a03/thumbnail-e3ba731ef3.png)
Moduł zastępuje standardowy układ listy produktów bardziej elastyczną siatką. Możesz osobno ustawić liczbę produktów w wierszu na telefonie, tablecie, laptopie i desktopie, wybrać informacje widoczne na kafelku produktu oraz wstawiać banery promocyjne bezpośrednio pomiędzy produkty.
Dodatkowo moduł może pokazywać przycisk Powiększ widok, który przełącza listę na szerszy układ i zapamiętuje wybór użytkownika w przeglądarce.
Jeżeli moduł znajdzie aktywny baner przypisany do aktualnej kategorii, baner domyślny jest dla tej kategorii ukrywany. Dlatego symulator pokazuje tylko jeden typ banera naraz. Zakładka Domyślny pokazuje wyłącznie ustawienia banera domyślnego, a Dla kategorii — wyłącznie repeater banerów kategorii. Dzięki temu edytujesz zawsze ten baner, który widzisz po prawej.
Lewy panel odwzorowuje kolejność i typy pól z konfiguracji Shoper. Zmiany pól oznaczonych LIVE są od razu nanoszone na syntetyczną listę produktów po prawej. Pole wyboru kategorii ma oznaczenie Konfiguracja, ponieważ służy do technicznego dopasowania kategorii Shopera.
Pozycja 0 oznacza baner przed pierwszym produktem. Pozycja 2 oznacza baner po drugim produkcie. Jeżeli ustawiona pozycja jest większa niż liczba produktów na stronie, baner trafia na koniec listy.
Liczba kolumn określa szerokość banera w siatce. Jeżeli baner ma zajmować więcej kolumn niż mieści się na danym urządzeniu, Twig rozciąga go na cały wiersz. Liczba wierszy określa wysokość zajmowaną w gridzie.
Baner domyślny i banery kategorii mogą mieć osobny zakres dat. Możesz też ograniczyć je wyłącznie do pierwszej strony listy. Symulator porównuje daty z przykładowym dniem 04.09.2026, dzięki czemu da się sprawdzić warunki bez podłączania sklepu.
Po włączeniu tej opcji nad listą pojawia się przycisk z własną grafiką, tekstem i kolorem. Kliknięcie przełącza klasy fwopened / fwhidden, aktualizuje opis przycisku i zapisuje stan w localStorage, dzięki czemu wybrany widok może zostać odtworzony przy kolejnym wejściu.
Produkty i typy sortowania są pobierane przez ObjectApi. Siatka korzysta z natywnych makr Storefront: list_grid, pagination, sort_select oraz product_tile. Banery są wstawiane bezpośrednio do szablonu elementów listy, dzięki czemu zajmują realne komórki grida.
Jedynym polem sklasyfikowanym jako Konfiguracja jest wybór kategorii w repeaterze banera kategorii. Pozostałe pola wpływają na output HTML/CSS/JS i zgodnie ze standardem source-trace są Live.
Rozbudowana specyfikacja produktu oparta o natywne atrybuty Shopera. Moduł pozwala dodać tytuł, zwijanie do określonej wysokości, własne teksty przycisku oraz sterować kolumnami, odstępami i nazwami grup cech.
![Miniatura modułu: [im3] ⭐ Nowe atrybuty produktu ⭐](/crm/uploads/instructions/module-thumbnails/mod_f4ab0a021005f90dd0b7/thumbnail-595e55193e.png)
Moduł wyświetla na karcie produktu specyfikację z grupami atrybutów pobranymi z Shopera. Pozwala dodać natywny tytuł akordeonu, ograniczyć wysokość długiej specyfikacji oraz dać klientowi przycisk rozwijania i zwijania treści.
Moduł pobiera atrybuty i grupy cech z aktualnego produktu przez Object API. Jeśli produktu nie ma przypisanych atrybutów, moduł nie wyświetli specyfikacji.
Symulator poniżej odwzorowuje pola z konfiguracji Shoper. Wszystkie ustawienia wpływające na renderowany moduł są oznaczone jako LIVE. Fioletowe S dotyczy wyłącznie informacji o danych zarządzanych poza modułem.
Po włączeniu opcji zwijania moduł ogranicza wysokość treści do wartości z pola Maksymalna wysokość specyfikacji przed rozwinięciem. Na dole pojawia się gradient i przycisk. Po kliknięciu treść rozwija się do pełnej wysokości, a tekst przycisku zmienia się na wariant dla stanu rozwiniętego.
Domyślnie atrybuty mogą być prezentowane w układzie wielokolumnowym zależnym od stylów szablonu. Opcja Wyświetlaj specyfikację w jednej kolumnie na wszystkich urządzeniach wymusza jedną kolumnę. Na małych ekranach moduł i tak przechodzi do jednej kolumny.
Nazwa grupy jest renderowana tylko wtedy, gdy jednocześnie włączone są odstępy między grupami i wyświetlanie nazw grup.
Moduł korzysta z natywnego akordeonu Storefront oraz makra product_attribute. Jeśli w sklepie działa flaga dev_storefront_ai_seo, atrybuty są dodatkowo dodawane do danych strukturalnych produktu jako additionalProperty.
Ten moduł steruje sposobem wyświetlania specyfikacji. Same nazwy grup, nazwy cech i ich wartości pochodzą z danych produktu i nie są konfigurowane w ustawieniach modułu.
![Miniatura modułu: [im3] ⭐ Nowy opis produktu ⭐](/crm/uploads/instructions/module-thumbnails/mod_c2601724e8ad31c9c68d/thumbnail-21825fac88.png)
Nowy opis produktu wyświetla opis aktualnego produktu pobrany z ObjectApi i pozwala opcjonalnie zamknąć go w rozwijanym akordeonie. Możesz wyświetlić własny tytuł, ustawić wysokość zwiniętej treści oraz teksty przycisku rozwijania i zwijania.
Jeżeli opis ma być domyślnie krótki, włącz zwijanie, ustaw wysokość np. 220–300 px, wybierz stan Zwinięte do wyznaczonej wysokości i wpisz teksty „Pokaż więcej” / „Pokaż mniej”.
Poniższy konfigurator odwzorowuje pola z config.json w kolejności źródłowej. Wszystkie pola wpływają na realny output Twig/CSS modułu, dlatego są oznaczone jako LIVE.
Podgląd używa syntetycznego produktu i dłuższego opisu testowego, żeby od razu było widać działanie ograniczenia wysokości, przycisku rozwijania i trybu wyglądu treści.
Źródłowy moduł korzysta z natywnego h-accordion Shopera. Gdy zwijanie jest aktywne, wysokość treści podczas stanu zwiniętego jest ustawiana przez pole „Maksymalna wysokość opisu przed rozwinięciem”. Po kliknięciu treść przechodzi do pełnej wysokości, a tekst przycisku zmienia się na wartość z pola „Treść rozwiniętego opisu”.
Jeżeli tytuł modułu jest wyłączony, konfiguracja źródłowa blokuje możliwość normalnego zwijania i opis pozostaje otwarty.
Opcja „Wygląd treści modułu określa” zmienia klasę renderowaną przez Twig. W trybie Tylko ustawienia edytora tekstu dodawana jest klasa resetcss. W trybie Edytor tekstu i styl szablonu sklepu treść może dziedziczyć typografię i inne style aktualnego szablonu.
Treść opisu nie jest wpisywana w ustawieniach tego modułu. Twig pobiera aktualny produkt przez ObjectApi.getProduct(product_id) i renderuje jego product.description. Jeżeli produkt nie ma opisu, moduł nie wyświetla sekcji opisu. Ten sam opis jest również używany w danych strukturalnych JSON-LD po usunięciu znaczników HTML.
Responsywny slider graficzny z tekstową nawigacją, opcjonalnymi strzałkami na desktopie oraz automatycznym przewijaniem.
![Miniatura modułu: [im3] ⭐ Nowy slider z nawigacją ⭐](/crm/uploads/instructions/module-thumbnails/mod_4c72cb3e0075793c1662/thumbnail-b453f42bcf.png)
Nowy slider z nawigacją wyświetla serię klikalnych grafik w jednym sliderze. Klient może przełączać slajdy przez tekstową nawigację pod grafiką oraz — na desktopie — strzałkami po bokach.
W tej wersji modułu każdy slajd ma jedno pole Obraz. Aktualny Twig używa tej samej grafiki na desktopie i mobile; na mniejszym ekranie obraz skaluje się responsywnie.
Poniżej możesz przećwiczyć konfigurację niemal tak samo jak w edytorze Shopera. Zmiany pól oznaczonych Live są nanoszone bezpośrednio na podgląd po prawej stronie.
Nawigacja tekstowa tworzy pod sliderem zakładki z nazw slajdów. Aktywna zakładka ma podkreślenie w wybranym kolorze. Strzałki działają na desktopie i są ukrywane na małych ekranach zgodnie z klasami użytymi w źródle modułu.
Po włączeniu Auto-scroll ustaw czas wyświetlania jednego slajdu na co najmniej 3 sekundy. Ręczne kliknięcie nawigacji lub strzałki zatrzymuje bieżący cykl i uruchamia go ponownie.
To pole występuje w konfiguracji, ale obecny kod modułu nie używa jego wartości. Aktywna zakładka ma w CSS wpisane na stałe tło #fafafa. Dlatego w symulatorze pole jest oznaczone jako Konfiguracja, a nie Live.
Moduł renderuje aktywne slajdy w poziomym kontenerze ze scroll-snap. JavaScript synchronizuje pozycję grafiki, aktywną zakładkę oraz widoczność strzałek. Autoplay korzysta z atrybutu autoplay i data-interval, a przy ustawieniu systemowym prefers-reduced-motion: reduce nie jest uruchamiany.
Promocyjny moduł jednego produktu z galerią miniaturek i odliczaniem do końca dnia, tygodnia lub miesiąca.
![Miniatura modułu: [im3] ⭐ Okazja Dnia / Tygodnia / Miesiąca ⭐](/crm/uploads/instructions/module-thumbnails/mod_2e980fa0e2ef49410429/thumbnail-09da069976.png)
Moduł wyróżnia jeden wskazany produkt jako okazję dnia, tygodnia albo miesiąca. Pokazuje jego galerię, dane produktowe, opcjonalny licznik końca promocji oraz nagłówek z rabatem, jeśli produkt ma ofertę specjalną.
Dzień — do najbliższej północy. Tydzień — do niedzieli 23:59:59. Miesiąc — do końca ostatniego dnia bieżącego miesiąca. Przy tygodniu i miesiącu moduł dodatkowo pokazuje liczbę dni.
Po lewej znajduje się układ ustawień zgodny z panelem modułu Shoper. Po prawej możesz sprawdzić wpływ pól LIVE, działanie licznika oraz galerię z miniaturami.
Źródłowy moduł pobiera wszystkie zdjęcia wybranego produktu. Główne zdjęcie zajmuje szeroką kolumnę, a po prawej znajduje się pionowa lista miniaturek. Najazd lub kliknięcie miniatury przełącza widoczne zdjęcie. Jeżeli miniaturek jest więcej niż mieści się w kolumnie, JS dodaje nawigację góra/dół.
moduletitlefontcolor i modulehurryfontcolor istnieją w konfiguracji, ale aktualny Twig ich nie używa. Ich zmiana w SVE nie zmieni koloru tekstu, dopóki kod modułu nie zostanie poprawiony.
Produkt jest pobierany przez ObjectApi.getProduct(product). Licznik działa w JS jako pojedynczy interwał odświeżany co sekundę i jest ponownie inicjalizowany po PageManager.loaded. Kolor ramki jest wymuszany na biały dla ekranów do 747 px. Pole rozmiaru zdjęcia steruje również wysokością pionowej galerii miniaturek.
Pasek informacyjny nad nagłówkiem z wieloma komunikatami, ikonami i stylowanymi odnośnikami.
![Miniatura modułu: [im3] ⭐ Pasek nad nagłówkiem ⭐](/crm/uploads/instructions/module-thumbnails/mod_87d7fb29e013612e5cec/thumbnail-14dbe453f6.png)
Moduł wyświetla pasek informacyjny nad nagłówkiem sklepu. Możesz dodać od 1 do 10 komunikatów, opcjonalne ikony oraz linki. Gdy komunikatów jest więcej, źródłowy JavaScript przewija je pionowo w pętli.
Dodaj 2–3 krótkie komunikaty, np. o dostawie, rabacie i kontakcie. W treści możesz dodać link — jego wygląd ustawisz bezpośrednio w konfiguracji modułu.
Symulator poniżej odwzorowuje pola z aktualnego config.json oraz rzeczywisty markup Twig. Wszystkie pola są oznaczone jako LIVE, ponieważ wpływają na generowany output modułu.
Aktualny Twig zapisuje tę wartość jako data-duration, ale obecny module.js nie czyta tego atrybutu. JS korzysta z data-interval albo wartości domyślnej 5000 ms. W tej wersji modułu zmiana pola nie zmienia więc realnego czasu autoplay.
| Element | Zachowanie źródłowe |
|---|---|
| Maksymalna szerokość | max-width na .topbarinner |
| Wysokość paska | max-height viewportu + height i line-height slajdu |
| Treść | WYSIWYG renderowane przez Twig z filtrem raw |
| Ikony | paths.original przed treścią komunikatu |
| Przewijanie | pionowy scroll + klon pierwszego elementu do pętli |
| Autoplay | 5000 ms domyślnie w aktualnym JS |
Slider popularnych kategorii z trzema wariantami karuzeli, opcjonalną nawigacją, auto-scrollem oraz tłem kafelków z animowanym efektem hover.
![Miniatura modułu: [im3] ⭐ Popularne kategorie ⭐](/crm/uploads/instructions/module-thumbnails/mod_dc33d1cc8ac2d1168471/thumbnail-5d1fa45eb0.png)
Popularne kategorie wyświetlają klikalne grafiki kategorii w sliderze. Każdy element składa się z grafiki, nazwy oraz opcjonalnego linku prowadzącego do odpowiedniej kategorii.
Jeżeli chcesz pokazać kilka kategorii obok siebie, wybierz wariant Wiele slajdów. Moduł sam zmienia liczbę widocznych elementów wraz z szerokością ekranu.
Poniższy symulator odwzorowuje pola z aktualnego config.json oraz zachowanie wynikające z Twig/CSS. Wszystkie widoczne ustawienia wpływają na output modułu, dlatego są oznaczone jako LIVE.
| Wariant | Działanie |
|---|---|
| Jeden slajd | Wyświetla po jednym elemencie, z pętlą i opcjonalną nawigacją. |
| Jeden slajd (minimalistyczny) | Również jeden element, ale bez dodatkowego paddingu/gapu wariantu standardowego. |
| Wiele slajdów | 1 element na małym ekranie, 2 od 768 px, 3 od 1200 px i 4 od 1920 px. |
Po włączeniu tła moduł dodaje warstwę pod grafiką. Zaokrąglenie 50% daje okrągłe tło. Przy najechaniu źródłowy CSS animuje obramowanie wokół kafelka za pomocą conic-gradient; jego kolor i grubość ustawisz osobno.
W wariancie Wiele slajdów liczba elementów w rzędzie jest sterowana bezpośrednio przez konfigurację slidera: 1 na mobile, 2 od 768 px, 3 od 1200 px i 4 od 1920 px. Pozostałe dwa warianty pracują po jednym slajdzie.
Moduł korzysta z natywnego komponentu h-slider Shopera. Tylko aktywne elementy z listy grafik są renderowane. Pole Klasa CSS jest emitowane zarówno na wrapperze modułu, jak i na photo-slider. JS modułu nie buduje własnego slidera — jedynie oznacza znalezione instancje klasą gotowości po inicjalizacji oraz po zdarzeniu PageManager.loaded.
Popup [09.2026] — instrukcja z nawigacją po typach popupów, live preview, opisami sekcji i historią aktualizacji. v05 wymusza poprawną typografię opisów pod nawigacją bezpośrednio na akapitach, aby style CRM nie nadpisywały font-size, line-height i marginesów.
![Miniatura modułu: [UPDATE] ⭐ Popup [09.2026]⭐- Integracja](/crm/uploads/instructions/module-thumbnails/mod_7094695e7ddec03d565c/thumbnail-6347c809e5.png)
Moduł został rozbudowany do jednego centrum obsługi kilku rodzajów popupów. W instrukcji poniżej wybierasz typ popupa z nawigacji u góry, konfigurujesz go po lewej stronie i od razu widzisz otwarty popup po prawej. Ustawienia globalne mają osobną zakładkę, ponieważ wpływają na wszystkie nowe typy popupów.
Na początku ustaw Ustawienia globalne, ponieważ określają wspólny wygląd wszystkich nowych popupów — m.in. tło, przyciemnienie, szerokość, zaokrąglenie i przycisk zamykania.
Następnie wybierz z nawigacji konkretny typ popupa i skonfiguruj jego własne zachowanie. Po lewej stronie edytujesz ustawienia, a po prawej od razu widzisz rezultat na podglądzie. Dzięki temu możesz przejść po kolei przez każdy typ i sprawdzić go bez przełączania się między osobnymi instrukcjami.
Sekcja Klasyczne (stare) została zachowana wyłącznie dla wcześniejszych wdrożeń. Przy nowych konfiguracjach zalecamy korzystanie z nowych typów popupów opisanych w tej instrukcji.
Tryb testowy służy do sprawdzania konfiguracji bez części ograniczeń zapamiętywanych przez przeglądarkę, dlatego ułatwia wielokrotne testowanie tego samego popupa. Po zakończeniu testów należy go wyłączyć, aby popup działał zgodnie z ustawioną częstotliwością, limitami i zapamiętywaniem zamknięcia.
Jeżeli kilka popupów spełni warunki uruchomienia w tym samym momencie, o kolejności decyduje priorytet. Pierwszeństwo ma popup z niższą liczbą, dlatego warto świadomie rozdzielić priorytety między najważniejsze komunikaty.
Zmiany pól oznaczonych jako LIVE są pokazane na podglądzie, gdy wpływają na wygląd lub bezpośrednie zachowanie. Pola techniczne, takie jak ID triggera albo prefiksy URL, mają oznaczenie S i dokładne objaśnienie po kliknięciu.
Po kliknięciu — otwiera się po kliknięciu elementu o wskazanym ID. Automatyczny — może reagować na czas, scroll lub liczbę odsłon. Newsletter — ma dedykowany formularz zapisu i własne opcje wyglądu. Potwierdzenie wieku — blokuje wejście do czasu deklaracji klienta i może zapamiętać potwierdzenie. Exit Intent — reaguje na wyjście kursorem poza górną krawędź okna. Klasyczne — zachowane dla zgodności ze starszą wersją modułu.
Popup wieku zbiera deklarację klienta. Nie sprawdza dokumentu ani faktycznej tożsamości użytkownika.
Źródłowy JavaScript sprawdza obsługę hover: hover i pointer: fine. Mechanizm jest więc przeznaczony przede wszystkim dla desktopu z myszą.
Moduł został przebudowany z prostego systemu klasycznych popupów do centrum obsługi kilku wyspecjalizowanych typów.
Instrukcja modułu „Powiązane jako warianty” po aktualizacji 18.09.2026: filtrowanie stanów 0, opcjonalny aktywny produkt, pozycja i dopasowanie zdjęć, poprawiona logika hover oraz interaktywny podgląd +N.
![Miniatura modułu: [UPDATE] ⭐ Powiązane jako warianty [09.2026] ⭐](/crm/uploads/instructions/module-thumbnails/mod_ca92e94568ad2e4ad2b7/thumbnail-4e41f69e5f.png)
Moduł pokazuje na karcie produktu produkty powiązane w formie miniaturek przypominających warianty. Możesz zdecydować, czy na początku listy ma pojawiać się również aktualnie oglądany produkt, a także ukryć produkty powiązane ze stanem magazynowym 0.
Na urządzeniach obsługujących hover najechanie na kafelek tymczasowo podmienia główne zdjęcie w galerii produktu. Opcjonalnie może również pojawić się chmurka z nazwą i ceną. Na urządzeniach dotykowych tap działa jak zwykłe przejście do produktu.
Moduł pobiera dane z produktów powiązanych aktualnego produktu. Jeżeli produkt nie ma żadnych relacji, moduł się nie wyświetli.
Produkty widoczne w tym module nie są wpisywane ręcznie w jego ustawieniach. Źródło Twig korzysta z ObjectApi.getProduct(product_id).relatedProducts, dlatego relacje muszą istnieć po stronie produktu w Shoperze.
Poniższy konfigurator odwzorowuje pola modułu w kolejności źródłowej. Wszystkie pokazane ustawienia wpływają na wynik lub zachowanie modułu, dlatego są oznaczone jako LIVE.
W danych testowych część produktów ma stan magazynowy 0. Dzięki temu możesz sprawdzić filtr stanów, widoczność aktywnego produktu, sposób liczenia +N, pozycjonowanie zdjęć, hover oraz chmurkę.
Limit nie zakłada już, że pierwszy kafelek zawsze jest aktualnym produktem. Najpierw moduł filtruje produkty ze stanem 0 — jeżeli ta opcja jest włączona — a następnie sprawdza ustawienie Pokaż aktywny produkt.
Jeżeli aktywny produkt jest widoczny, zajmuje jedno miejsce w limicie. Jeżeli jest wyłączony, cały limit może zostać wykorzystany przez produkty powiązane. Kafelek +N pokazuje liczbę elementów pozostałych po tych filtrach.
Podmiana głównego zdjęcia działa teraz tylko wtedy, gdy urządzenie faktycznie obsługuje hover i precyzyjny wskaźnik: (hover: hover) and (pointer: fine). Na urządzeniach dotykowych moduł nie przechwytuje tapnięcia jako hover — tap działa jak zwykły link do produktu.
Hover jest obsługiwany na całym kafelku produktu. Po wejściu kursorem JavaScript odczytuje data-bigimg i podmienia srcset aktywnego źródła w galerii. Po opuszczeniu kafelka przywracane jest wcześniejsze zdjęcie.
Po włączeniu pola Pokaż chmurkę z nazwą i ceną produktu nieaktywne miniatury pokazują na hover dodatkowy boks z nazwą i ceną. Aktualny, aktywny produkt nie pokazuje tej chmurki.
Rozmiar zdjęcia i rozmiar boksa to dwie niezależne wartości. Dla czytelnego efektu zdjęcie powinno mieścić się w boksie z uwzględnieniem zapasu wynikającego z paddingu.
Nowe ustawienia Pozycja zdjęcia w pionie oraz Dopasowanie zdjęcia pozwalają niezależnie określić położenie obrazu i sposób wypełnienia dostępnej przestrzeni. Tryb Contain zachowuje całe zdjęcie, natomiast Cover wypełnia cały obszar kosztem możliwego przycięcia.
Kolor aktywny dotyczy aktualnego produktu, kolor hover pozostałych produktów po najechaniu, a zwykły kolor obramowania — stanu spoczynkowego.
Moduł nie ma pola z ID produktów. Lista powstaje z relatedProducts bieżącego produktu. To jest logika źródłowa i w instrukcji nie dodano żadnego fikcyjnego selektora źródła.
Rozszerzyliśmy moduł o ustawienia, które pozwalają lepiej kontrolować widoczność produktów oraz sposób prezentacji ich zdjęć.
Mobilny przyklejony koszyk na karcie produktu. Po przewinięciu poniżej źródłowych akcji produktu kopiuje do dolnego paska aktualną cenę i moduł akcji koszyka.
![Miniatura modułu: [im3] ⭐ Przyklejony koszyk na karcie produktu ⭐](/crm/uploads/instructions/module-thumbnails/mod_238c092a8aaa8ddd57f5/thumbnail-c1664f7228.png)
Przyklejony koszyk na karcie produktu dodaje na telefonie dolny pasek z aktualną ceną i akcją dodania produktu do koszyka. Pasek pojawia się dopiero po przewinięciu strony poniżej oryginalnego modułu akcji produktu.
Dzięki temu klient nadal ma dostęp do najważniejszej akcji zakupowej, nawet gdy główny przycisk koszyka zniknie już z ekranu.
Źródłowy JavaScript uruchamia StickyBasket wyłącznie przy szerokości do 767 px. Na desktopie moduł jest niszczony przez destroy() i pasek pozostaje schowany.
Konfigurator poniżej odwzorowuje kolejność i typy pól z modułu Shoper. Po prawej jest syntetyczna karta produktu, dzięki której możesz od razu sprawdzić moment pojawienia się sticky paska oraz zmianę ceny.
Moduł oblicza dolną krawędź źródłowej sekcji .modules-actions. Sticky zostaje pokazany dopiero wtedy, gdy pozycja przewinięcia strony przekroczy tę krawędź.
W symulatorze możesz przełączyć się między Mobile — przed progiem i Mobile — sticky, a także przewijać samą demonstracyjną kartę produktu.
Źródłowy JavaScript klonuje do paska dwa elementy z realnej karty produktu: akcje koszyka oraz blok ceny. Zmiany ceny są nasłuchiwane przez event product.priceChanged oraz dodatkowo przez MutationObserver.
Przycisk Zmień cenę demo w konfiguratorze pozwala sprawdzić ten mechanizm na danych testowych bez połączenia ze sklepem.
W Twig znajdują się elementy obrazu i nazwy produktu, a ich style mają własne ustawienia. Jednocześnie CSS ukrywa oba elementy przy szerokości do 800 px, podczas gdy JavaScript uruchamia StickyBasket tylko do 767 px. Oznacza to, że w aktualnej wersji źródła nie są one widoczne w realnym działającym sticky na telefonie.
Zakładka Pola stylu w symulatorze pokazuje je wyłącznie jako inspektor istniejących stylów, żeby dało się uczciwie sprawdzić wszystkie ustawienia źródłowe.
.modules-actions..imodules-gridppage .js__product-price-gross .product-price.window.innerWidth <= 767.PageManager.loaded montuje moduł, a PageManager.beforeRendered go niszczy.id, aby nie powielać ich w DOM.Ustawienia wizualne istniejącej stopki Storefront z lazy-loadowanym tłem.
![Miniatura modułu: [im3] ⭐ Ustawienia stopki ⭐](/crm/uploads/instructions/module-thumbnails/mod_f0b125a021847aca6869/thumbnail-e82fe81316.png)
Moduł rozszerza istniejącą stopkę Storefront o ciemną stylistykę oraz lazy-loadowane tło graficzne. Nie tworzy własnej stopki od zera — działa na elemencie .imodules-footer, który musi już istnieć w szablonie.
Grafika jest ładowana dopiero, gdy stopka zbliża się do obszaru widocznego ekranu, co ogranicza niepotrzebne pobieranie zasobu przy pierwszym renderze strony.
Mimo opisu pola w Shoperze mówiącego o logotypie, aktualny kod używa tej grafiki jako tła całej stopki.
Aktualny module.twig i module.js korzystają wyłącznie z pola IMcolumnsImage. Pola koloru ramki, koloru tła, treści, tytułu linku i adresu URL pozostają w formularzu, ale nie wpływają obecnie na front. Dlatego w symulatorze są oznaczone jako S.
Po lewej stronie znajduje się formularz odwzorowujący aktualny config.json 1:1. Po prawej widzisz syntetyczną stopkę Storefront. Zmiana grafiki aktualizuje tło natychmiast; pozostałe pola można edytować, ale zgodnie ze źródłem nie zmieniają podglądu.
Twig zapisuje adresy grafiki WebP/JPG do window.IM_FOOTER_BG. JavaScript wybiera obsługiwany format i obserwuje .imodules-footer przez IntersectionObserver z marginesem 300 px. Gdy stopka zbliży się do viewportu, obraz jest preloadowany i dopiero po jego załadowaniu trafia do background-image.
Moduł ponownie podpina logikę po zdarzeniu PageManager.loaded, dzięki czemu działa również przy przejściach Storefront bez pełnego przeładowania strony.
Źródło ma fallback w <noscript>. Jeżeli JavaScript jest wyłączony, grafika WebP zostaje ustawiona bezpośrednio jako tło stopki.
Prosty moduł kontaktowy z ikoną, tekstem i klikalnym numerem telefonu, z konfiguracją kolorów i rozmiarów tekstu.
![Miniatura modułu: [im3] ⭐ Zadzwoń i zamów ⭐](/crm/uploads/instructions/module-thumbnails/mod_a7db24dca208964183a8/thumbnail-56746c7eb6.png)
Zadzwoń i zamów dodaje na froncie prosty komunikat kontaktowy: grafikę/ikonę, własny tekst oraz klikalny numer telefonu. Najczęściej można go wykorzystać na karcie produktu, np. pod przyciskiem dodawania do koszyka.
W obecnej wersji źródłowej pole Włącz - Wyłącz moduł nie jest używane w Twig. Sam checkbox nie steruje więc widocznością modułu. Instrukcja pokazuje to zgodnie ze źródłem zamiast udawać działanie, którego w kodzie nie ma.
Na ekranach o szerokości do 575 px moduł wymusza rozmiar 14 px zarówno dla tekstu komunikatu, jak i numeru telefonu. Dlatego wartości rozmiaru ustawione w panelu wpływają przede wszystkim na desktop.
Numer telefonu jest renderowany jako klikalny link tel:. Widoczny tekst otrzymuje prefiks +48. Grafika jest renderowana z ALT i TITLE „Kontakt”. Moduł nie ma własnego JavaScriptu.
Prosty moduł zalet z kafelkami zawierającymi ikonę, nagłówek i opis; na mobile automatycznie działa jako poziomo przewijana lista.
![Miniatura modułu: [im3] ⭐ Zalety ⭐](/crm/uploads/instructions/module-thumbnails/mod_efc90c9fbd87ecba15ad/thumbnail-b0234482ff.png)
Moduł Zalety wyświetla rząd prostych kafelków z ikoną, nagłówkiem i opisem. Sprawdza się do pokazania najważniejszych przewag sklepu, np. dostawy, płatności, zwrotów albo wsparcia.
Dodaj 3–5 najważniejszych zalet, przypisz każdej krótką ikonę, nagłówek i jednozdaniowy opis. Na mobile kafelki automatycznie zmieniają się w poziomo przewijaną listę.
Konfigurator poniżej odwzorowuje pola modułu ze źródłowego config.json. Zielone pola LIVE zmieniają prawy podgląd natychmiast. Fioletowe S oznaczają pola, które istnieją w konfiguracji, ale aktualny kod modułu ich nie wykorzystuje.
Na desktopie zalety są ułożone obok siebie i wykorzystują ustawiony odstęp oraz rozmiary fontów. Poniżej 768 px źródło przełącza moduł w poziomo przewijany pasek: każdy kafelek ma około 64% szerokości, odstęp jest ustawiony na 10 px, tytuł ma 17 px, a opis 14 px. Ikony są na mobile delikatnie pomniejszone.
Pola Kolor czcionki w tytule oraz Kolor czcionki opisu są zdefiniowane w formularzu modułu, ale nie występują w aktualnym module.twig. Zmiana tych pól nie ma obecnie wpływu na front sklepu.
Moduł nie korzysta z dodatkowego JavaScriptu. Układ i responsywność są realizowane przez CSS osadzony w Twig. Na hoverze desktopowym dolna krawędź kafelka przyjmuje kolor var(--primaryColor), a ikona skaluje się do 110%.
Pasek odliczający czas do dzisiejszej wysyłki. Pokazuje komunikat „Zamów w ciągu …, a wyślemy jeszcze dzisiaj”, a po zakończeniu czasu przełącza się na komunikat zapasowy.
![Miniatura modułu: [im3] ⭐ Zamów do X a wyślemy jeszcze dzisiaj - test](/crm/uploads/instructions/module-thumbnails/mod_a6d2e658a1d0375688cb/thumbnail-9155c6f44c.png)
Zamów do X, a wyślemy jeszcze dzisiaj to moduł informacyjny na karcie produktu, który pokazuje klientowi odliczanie do dzisiejszej godziny wysyłki.
Jeżeli klient zdąży złożyć zamówienie przed ustawioną godziną graniczną, widzi aktywny licznik. Gdy czas minie albo aktualny dzień nie obsługuje wysyłki, moduł przełącza się na komunikat zapasowy.
Zgodnie ze źródłowym Twig moduł jest renderowany tylko dla produktów, które mają ustawioną dostawę 1 dzień.
| Pole | Znaczenie | Efekt |
|---|---|---|
| Ikonka | Opcjonalna grafika po lewej stronie paska. | Wyróżnia komunikat wizualnie. |
| Informacja nr 1 | Tekst przed licznikiem. | Np. „Zamów w ciągu”. |
| Informacja nr 2 | Tekst uzupełniający przy liczniku. | Np. „a wyślemy jeszcze dzisiaj!”. |
| Informacja nr 3 | Treść po czasie lub w dni bez wysyłki. | Pokazuje komunikat zapasowy. |
| Godziny wysyłek | Godzina graniczna dla każdego dnia. | Wpływa na aktywność licznika. |
| Wyśrodkuj treść | Centruje zawartość paska. | Zmienia układ komunikatu. |
Źródłowy skrypt inicjalizuje elementy .delivery-time i przy ponownym załadowaniu widoku Storefront czyści poprzedni timer, a następnie uruchamia go ponownie. Dzięki temu licznik nie duplikuje się po przeładowaniach sekcji.
![Miniatura modułu: [im3]⭐Koszyk Jednoetapowy - Ustawienia](/crm/uploads/instructions/module-thumbnails/mod_73600bdb613e44b78eb0/thumbnail-b4f0a5aa7b.png)
Koszyk Jednoetapowy - Ustawienia dopasowuje wygląd jednoetapowego koszyka i pozwala przypisywać własne ikonki do konkretnych metod dostawy oraz płatności. Dodatkowo może wyświetlać ikonki wybranych subpłatności Shopera, m.in. kart, Google Pay, BLIK i PayPo.
Ikonka jest przypisywana po ID dostawy lub płatności. Możesz podać kilka ID po przecinku, np. 1,2, jeżeli ta sama grafika ma być użyta przy kilku opcjach.
W dostarczonym HTML koszyka występują m.in. ID: 1 — InPost Paczkomaty 24/7, 2 — InPost Kurier, 6 — DHL Kurier i 8 — Odbiór osobisty.
Dostarczony HTML sklepu zawiera tylko płatność Gotówka (ID 1). W środowisku testowym dodałem jeszcze trzy przykładowe płatności, żeby można było normalnie sprawdzać różne przypisania ikon.
Poniższy konfigurator odwzorowuje formularz źródłowy Shopera i cały kontekst koszyka ze screena/HTML. Lewa strona zachowuje strukturę sekcji oraz repeaterów z config.json, a po prawej od razu widać, do których metod trafiają wybrane ikonki.
Po włączeniu opcji Włącz ikonki subpłatności moduł korzysta ze stałego zestawu identyfikatorów w źródle: 1500-18 — karty, 1512-18 — Google Pay, 509-18 — BLIK oraz 8888-18 — PayPo. Pole „ID głównej płatności” wskazuje bramkę, np. Autopay lub Przelewy24, do której należą te subpłatności.
Źródłowy Twig przypisuje grafiki przez selektory CSS bazujące na atrybucie controlid. Dla dostaw szuka shipping-ID, a dla głównych płatności payment-ID-ID. Osobny skrypt korzysta z basketShippingsApi po zdarzeniu basket.initialized; ta część nie posiada pól konfiguracyjnych i nie wymaga ustawień klienta.
Wyświetla konfigurowalne etykiety na podstawie atrybutów produktu. Lista produktów zachowuje zatwierdzony podgląd z realnym środkowym produktem; karta produktu używa neutralnego skeletonu z realnymi wyłącznie etykietami modułu.
![Miniatura modułu: [im4] ⭐ Atrybuty jako etykiety⭐](/crm/uploads/instructions/module-thumbnails/mod_865778b1efd35092c32c/thumbnail-4c5b65860d.png)
Moduł wyświetla na produktach etykiety tworzone na podstawie atrybutów produktu. Każda aktywna reguła wskazuje nazwę atrybutu, opcjonalnie wymaganą wartość oraz wygląd etykiety. Reguły mogą działać osobno na liście produktów i na karcie produktu.
Moduł może wyświetlić do 30 aktywnych reguł etykiet. Każda reguła jest sprawdzana niezależnie, dlatego jeden produkt może otrzymać kilka etykiet.
Etykieta pojawi się tylko wtedy, gdy produkt ma atrybut o wskazanej nazwie i jego wartość nie jest pusta. Jeżeli włączysz sprawdzanie wartości, wartość produktu musi dodatkowo odpowiadać wartości wpisanej w regule.
W trybie Lista produktów podgląd pokazuje trzy duże kafelki bez slidera. Środkowy kafelek prezentuje działanie tego modułu, a dwa pozostałe są uproszczonym kontekstem.
Popover informacji przy etykiecie odwzorowuje pozycję i zachowanie z pliku module.twig: otwiera się bezpośrednio pod etykietą, ma strzałkę i nie może być przycinany przez kafelek.
Większość opisów ustawień została przeniesiona bezpośrednio do oznaczeń przy polach konfiguratora. Dzięki temu klient nie musi czytać osobnych tabel przed konfiguracją.
Oznaczenia: niebieskie Konfiguracja ⓘ = ustawienie konfiguracyjne w Shoperze; zielone Live ⓘ = ustawienie, którego efekt można od razu zobaczyć po prawej stronie. Jedno pole ma zawsze tylko jedno oznaczenie. Kliknięcie oznaczenia otwiera pełny opis pola.
Górny margines etykiet i Dolny margines etykiet występują w config.json, ale w przekazanym module.twig nie są używane w żadnej regule CSS. Zmiana tych pól nie powinna więc być opisywana klientowi jako działająca funkcja, dopóki kod nie zostanie uzupełniony.
Przekazane źródła pokazują, że moduł oczekuje elementów [data-im-product-attribute-badges] z atrybutem data-product-attributes, ale nie zawierają kodu, który te elementy umieszcza na liście i karcie produktu. Dlatego ta instrukcja nie zakłada konkretnego miejsca instalacji hooka. Do udokumentowania tego kroku 1:1 potrzebny jest fragment rzeczywistego HTML/Twig odpowiedzialnego za hook.
Moduł do osadzania dynamicznych boxów produktowych w treści sklepu. Na podstawie atrybutów data-* pobiera produkty przez Storefront API i renderuje je jako responsywną siatkę albo natywny slider, z konfigurowalnym kafelkiem produktu.
![Miniatura modułu: [im4] ⭐ Boxy produktowe PRO ⭐](/crm/uploads/instructions/module-thumbnails/mod_108281cb99cf9aa09bd0/thumbnail-0eb4213e80.png)
Boxy produktowe PRO pozwalają wstawić w dowolnym miejscu treści sklepu pusty element HTML, który moduł automatycznie uzupełni produktami pobranymi ze Storefront API.
Każdy box może działać jako siatka albo slider i może mieć własne źródło produktów, limit, liczbę produktów w rzędzie, rozmiar zdjęć oraz odstępy.
<div class="productbox" data-category="3" data-limit="12" data-slider="true"></div>Na jednym boxie ustawiaj jedno źródło produktów. Pozostałe parametry, np. limit czy liczba produktów w rzędzie, możesz dopisywać niezależnie.
Nie musisz ręcznie składać atrybutów data-*. Ustaw źródło produktów i parametry poniżej, a generator przygotuje pełny element HTML oraz skopiuje go po kliknięciu jednego przycisku.
<!-- Produkty z kategorii jako slider -->
<div class="productbox" data-category="3" data-limit="12" data-slider="true"></div>
<!-- Konkretne produkty jako grid -->
<div class="productbox" data-custom="12,25,31,48" data-slider="false" data-desktop-items="4"></div>
<!-- Nowości -->
<div class="productbox" data-news="1" data-limit="8" data-slider="true"></div>
<!-- Wyniki wyszukiwania -->
<div class="productbox" data-search="serum" data-limit="8" data-slider="true"></div>Symulator poniżej odwzorowuje sekcje i typy pól z konfiguracji Shoper. Zielone LIVE zmieniają prawy podgląd. Fioletowe S oznaczają ustawienia techniczne albo pola, których aktualny kod modułu jeszcze nie wykorzystuje w renderowaniu — ich działania nie udajemy.
| Atrybut | Źródło | Przykład |
|---|---|---|
| data-custom | Lista konkretnych ID produktów | data-custom="12,25,31,48" |
| data-category | Produkty z kategorii | data-category="3" |
| data-collection | Produkty z kolekcji | data-collection="7" |
| data-related | Produkty powiązane z produktem | data-related="123" |
| data-news | Nowości | data-news="1" |
| data-promo | Produkty promocyjne | data-promo="1" |
| data-bestseller | Bestsellery | data-bestseller="1" |
| data-potd | Produkty dnia | data-potd="1" |
| data-search | Wyniki wyszukiwania | data-search="serum" |
| Atrybut | Działanie |
|---|---|
| data-limit | Liczba produktów w boxie; podlega globalnemu limitowi maksymalnemu |
| data-slider="true" | Renderuje natywny slider; bez tego atrybutu powstaje grid |
| data-mobile-items | Liczba produktów/slajdów na telefonie |
| data-tablet-items | Liczba produktów/slajdów od 768 px |
| data-laptop-items | Liczba produktów/slajdów od 1024 px |
| data-desktop-items | Liczba produktów/slajdów od 1280 px |
| data-image-size | Rozmiar obrazka pobieranego dla produktu |
| data-gap | Odstęp między elementami, np. 16px albo 1rem |
Moduł buduje kafelek na bazie natywnego elementu product-tile. Możesz włączyć m.in. ulubione, SKU, kod producenta, nazwę producenta, cenę jednostkową, przycisk do koszyka, status dostępności albo wymusić przycisk „Zobacz produkt”.
Jeżeli produkt nie ma stockId, JS również przechodzi na link „Zobacz produkt” zamiast buy-button.
Grid używa CSS Grid, a slider własnego viewportu z poziomym przewijaniem i scroll-snap. Breakpointy w źródle to: 768 px tablet, 1024 px laptop i 1280 px desktop.
Ustawienia globalne są tylko fallbackiem. Jeśli konkretny box ma własne data-mobile-items, data-tablet-items, data-laptop-items, data-desktop-items albo data-gap, wartości z HTML mają pierwszeństwo.
Analiza źródła wykazała, że kilka ustawień jest zapisanych w konfiguracji, ale aktualny JS ich nie odczytuje. Dotyczy to m.in. domyślnego rozmiaru zdjęcia, ceny regularnej przy promocji, procentu rabatu, informacji VAT, informacji o cenie bez dostawy, skracania długiej nazwy, checkboxa użyj tła pod zdjęciem oraz strzałek slidera na mobile.
W instrukcji pola te mają oznaczenie S, żeby symulator nie pokazywał funkcji, której źródło faktycznie nie wykonuje.
Jeżeli przez pomyłkę ustawisz kilka atrybutów źródłowych jednocześnie, JS sprawdza je w kolejności: custom → category → collection → related → news → promo → bestseller → potd → search. Pierwszy znaleziony typ wygrywa.
Produkty są pobierane przez ProductFetcherApi. Jeżeli API nie jest jeszcze dostępne, moduł próbuje dynamicznie zarejestrować feature ProductFetcher. Dla data-search używany jest SearchApi lub awaryjnie ProductSearchApi.
Trzykolumnowa sekcja contentowa do Storefront: lewa treść WYSIWYG, pionowe zdjęcie pośrodku oraz prawa treść z opcjonalnym zdjęciem. Moduł pozwala ustawić szerokość sekcji, odstępy i osobne zaokrąglenia każdego narożnika obu grafik.
![Miniatura modułu: [im4] ⭐ CODZIENNA PIELĘGNACJA
W STYLU COSMO⭐](/crm/uploads/instructions/module-thumbnails/mod_13c40c4af85b7b855b10/thumbnail-d3ae220541.png)
Moduł buduje responsywną sekcję contentową z trzema częściami: treścią po lewej, dużym zdjęciem pośrodku oraz treścią z opcjonalnym zdjęciem po prawej.
Najlepiej sprawdza się jako rozbudowana sekcja wizerunkowa lub informacyjna, w której tekst jest przeplatany dużymi zdjęciami. Treści po lewej i po prawej edytujesz przez WYSIWYG, a kształt obu grafik możesz dopasować niezależnymi promieniami narożników.
Na dostarczonym przykładzie lewa kolumna zawiera dwa bloki tekstowe, środkowa wysokie zdjęcie, a prawa blok tekstowy i niższe zdjęcie. Podgląd poniżej odtwarza właśnie ten układ i jego proporcje.
Panel po lewej odwzorowuje kolejność i typy pól z edytora Shoper. Wszystkie ustawienia tego modułu są oznaczone jako Live, ponieważ zmieniają renderowaną sekcję albo jej właściwości bezpośrednio w podglądzie.
Na dużym ekranie moduł korzysta z trzech kolumn. Przy mniejszej szerokości układ przechodzi najpierw w dwie kolumny, a na telefonie w jedną kolumnę.
Na mobile kolejność wynika bezpośrednio ze struktury modułu: lewa treść → zdjęcie środkowe → prawa treść → zdjęcie prawe. Obrazy nie są sztucznie kadrowane — źródło używa width: 100% i height: auto, więc zachowują własne proporcje.
Moduł wyświetla w nagłówku listę ikon/linków do profili social media.
![Miniatura modułu: [im4] ⭐ ikonki social media ⭐](/crm/uploads/instructions/module-thumbnails/mod_ae52b59b419a94bcd93f/thumbnail-44f6c7f9fa.png)
Moduł wyświetla w jednym rzędzie linki do profili w social media — np. Instagram, Facebook, YouTube czy TikTok. Każdy element może mieć własną ikonę, nazwę i adres URL.
Dodaj osobny element dla każdego profilu, wgraj ikonę, wpisz nazwę serwisu i pełny adres profilu. Moduł sam otwiera link w nowej karcie.
https://instagram.com/twojprofil.Poniższy konfigurator odwzorowuje formularz modułu. Możesz dodawać i usuwać pozycje, zmieniać nazwę i URL oraz lokalnie podmieniać ikonę.
Jeżeli element ma adres URL, ale nie ma wgranej ikony, moduł wyświetli w jej miejscu nazwę elementu. Dzięki temu link nadal pozostanie widoczny i klikalny.
Na froncie renderowane są tylko elementy z adresem URL. Link ma target="_blank" oraz rel="noopener noreferrer". Nazwa jest używana w aria-label, title i alt ikony.
Mega Menu v6.2 — instrukcja sekcja po sekcji; w v41 uproszczono wizualizację dropdownów produktowych do samego menu i submenu, sekcję „Kafelek produktu” przeniesiono do układu opis + wizualizacja z listą elementów bazowych, a całość dopracowano pod dalsze iteracje sekcji produktowych.
![Miniatura modułu: [im4] ⭐ MEGA MENU v6.2 ⭐](/crm/uploads/instructions/module-thumbnails/mod_aaf59717aaa78135a1e1/thumbnail-17cc9387cb.png)
Mega Menu v6.2 korzysta z prawdziwego drzewa kategorii Shopera i pozwala osobno skonfigurować układ poziomów 1–4, style, submenu, produkty, producentów, badge oraz zachowanie sticky.
Najważniejsze jest to, że nie każda pozycja menu musi działać tak samo. Jedna kategoria może korzystać z układu z lewą kolumną, inna z pełnej szerokości, a kolejna ze zwykłej rozwijanej listy lub dodatkowych elementów sprzedażowych.
Wersja 6.2 łączy desktop i mobile w jednej architekturze oraz porządkuje konfigurację tak, aby nie trzeba było utrzymywać dwóch niezależnych menu.
Mega Menu v6.2 jest zintegrowane z menu mobilnym, więc po wdrożeniu nie zostawiaj w layoucie starego, osobnego menu mobilnego. Obecny element „Menu (linki w nagłówku) #1” należy usunąć, aby nie dublować nawigacji.
Jeżeli moduł jest osadzony w kolumnie nad starym menu, sprawdź ustawienie Widoczność na urządzeniach. Aby Mega Menu działało także na telefonie, w tej kolumnie musi być zaznaczone nie tylko Tablet / Laptop / Desktop, ale również Telefon.
Po usunięciu starego modułu mobilnego i włączeniu widoczności kolumny na telefonie jedno Mega Menu obsługuje zarówno desktop, jak i mobile.
W tej wersji desktop i mobile działają w ramach jednego modułu. Konfigurujesz jedną architekturę menu, a moduł prezentuje ją w odpowiedniej formie na komputerze i telefonie.
Na froncie nie dochodzi do duplikowania kategorii przez osobny drugi moduł mobilny. Mobilna nawigacja korzysta z tej samej logiki i tego samego drzewa kategorii co wersja desktopowa.
Dzięki temu zmiany konfiguracji Mega Menu obejmują również wariant mobilny i nie rozjeżdżają się pomiędzy dwoma niezależnymi menu.
Poniżej każda sekcja jest pokazana w jednym, stałym układzie: opis po lewej, przykładowe ustawienia na środku i — tam, gdzie ma to sens — dynamiczna wizualizacja po prawej. Ustawienia techniczne, takie jak SEO, nie dostają sztucznego podglądu wizualnego.
Instrukcja modułu „Nowe kolekcje z markerami” z pełnym środowiskiem testowym, markerami 1:1 oraz popupem konfiguracji markerów.
![Miniatura modułu: [im4] ⭐ Nowe kolekcje z markerami ⭐](/crm/uploads/instructions/module-thumbnails/mod_c0589f1b94533cf59b7f/thumbnail-e30bced643.png)
Nowe kolekcje z markerami łączą dużą grafikę kolekcji z markerami wskazującymi konkretne produkty oraz sliderem produktów z tej samej kolekcji. Na desktopie możesz najechać marker lub kafelek produktu — oba elementy zostają ze sobą powiązane.
W źródłowym module dla szerokości do 980 px znika desktopowa grafika z markerami. Pojawia się ta sama grafika w wersji RWD nad sliderem, ale markery nie są na niej renderowane. Symulator odwzorowuje to zachowanie.
Podgląd korzysta z syntetycznej kolekcji i produktów, dzięki czemu możesz od razu sprawdzić pozycje markerów, hover marker ↔ produkt, slider, tytuł/opis oraz opcje kafelka bez połączenia z ObjectApi sklepu. W tej wersji grafika kolekcji zachowuje naturalne proporcje, a dodatkowy popup Konfiguruj pozwala dodawać i przeciągać markery bez kadrowania obrazu.
Każdy aktywny marker wskazuje produkt przez jego ID. Pozycja markera jest ustawiana przez wartości procentowe top i left. Po najechaniu marker pokazuje popup z obrazem, nazwą i ceną produktu. JavaScript modułu łączy marker z kafelkiem w sliderze po wspólnym atrybucie product-id. W symulatorze możesz dodatkowo ustawić pozycję markera wizualnie w popupie Konfiguruj, a wartości pól po lewej stronie zaktualizują się automatycznie.
product_tile Shopera.ObjectApi.getCollection() i ObjectApi.getProductsInCollection().Nowe Menu v5 — starsza wersja rozbudowanego menu Storefront. Instrukcja zachowuje obsługę istniejących wdrożeń i na początku rekomenduje migrację do Mega Menu v6.2.
![Miniatura modułu: [im4] ⭐ nowe menu v5 ⭐](/crm/uploads/instructions/module-thumbnails/mod_255c0e3c9c37dafbe9a0/thumbnail-ad153a7dbe.png)
Nowe Menu v5 rozbudowuje główne menu Storefront o szerokie dropdowny kategorii, lewą kolumnę subkategorii, grafiki, ikony, dropdowny produktowe Nowości i Promocje, zakładkę Producentów oraz dodatkowe linki po prawej stronie.
Ta instrukcja pozostaje dostępna dla sklepów, które nadal korzystają z wersji v5. Jeżeli planujesz nowe wdrożenie albo większą przebudowę menu, rekomendujemy przejście na aktualną wersję Mega Menu v6.2.
Dla nowych wdrożeń zalecamy Mega Menu v6.2. Nowsza wersja jest szybsza, ma wspólną architekturę desktop + mobile, nie dubluje osobnych elementów menu mobilnego i porządkuje konfigurację na czytelniejsze sekcje.
Jeżeli korzystasz z v5 i chcesz przejść na nowszą wersję, sprawdź instrukcję Mega Menu v6.2:
Jeżeli przycisk w podglądzie CRM nie otwiera strony, skopiuj ten adres ręcznie:
https://imodules.eu/crm/instrukcja-podglad/doc_cf3dee0cf7f38ca50a6f/#mod_aaf59717aaa78135a1e1--im4-mega-menu-v6-2
Jeżeli masz problem z aktualizacją lub nie wiesz, którą wersję wybrać, napisz bezpośrednio na [email protected].
Wersja v5 pobiera główne pozycje nawigacji z linków w nagłówku Shopera. W samym module ustawiasz zachowanie dropdownów, szerokości, grafiki, ikony, produkty, producentów i dodatkowe linki po prawej.
Jeżeli brakuje pozycji w głównym menu, najpierw sprawdź konfigurację linków nagłówka w panelu Shopera.
Poniżej każda część v5 jest pokazana w stałym układzie. W większości sekcji zobaczysz opis po lewej, przykładowe ustawienia na środku i dynamiczną wizualizację po prawej. Tam, gdzie środkowa kolumna nic realnie nie wnosi, zostawiamy tylko opis i wizualizację, żeby instrukcja była krótsza i czytelniejsza.
Rozbudowany moduł zalet: główna grafika po lewej lub prawej stronie, tytuł z linią i akcentem, repeater zalet z ikonami i treścią oraz opcjonalny przycisk CTA. Ustawienia obejmują układ, grafikę, typografię, odstępy, kolory i pełny styl przycisku.
![Miniatura modułu: [im4] ⭐ Rozbudowane zalety⭐](/crm/uploads/instructions/module-thumbnails/mod_7dbe50e479dbb02125a1/thumbnail-4e99387718.png)
Moduł tworzy rozbudowaną sekcję prezentującą najważniejsze zalety, przewagi lub etapy. Składa się z dużej grafiki, tytułu, listy zalet z ikonami oraz opcjonalnego przycisku.
Grafikę możesz ustawić po lewej albo prawej stronie. Każda zaleta ma własną ikonę, tytuł i treść WYSIWYG, a wygląd całej sekcji można dopasować bez dodatkowego CSS.
W realnym wdrożeniu COSMO moduł jest użyty w dwóch sąsiadujących kolumnach strony. W podglądzie tylko aktualnie dokumentowany moduł jest kolorowy i interaktywny; sąsiedni fragment strony jest pokazany jako neutralny skeleton.
Symulator odwzorowuje kolejność i typy pól z edytora Shoper. Zmiana wartości nie resetuje stanu lewego panelu: otwarte zakładki, pozycja scrolla, tryb Desktop/Mobile i fokus pozostają bez zmian. Dodanie lub usunięcie zalety przebudowuje wyłącznie repeater i również odtwarza jego stan.
Przy szerokości poniżej 992 px układ przechodzi do jednej kolumny: grafika znajduje się nad treścią i korzysta z osobnej wartości Wysokość grafiki mobile.
Poniżej 576 px każda zaleta układa ikonę nad tekstem, a tytuł, opis oraz przycisk są wyśrodkowane. To zachowanie wynika bezpośrednio z kodu Twig/CSS modułu.
Trzykolumnowa sekcja sprzedażowa z dwiema grafikami, centralnym boxem treści, ikoną i CTA. Na mobile źródłowy CSS ukrywa boczne grafiki.
![Miniatura modułu: [im4] ⭐ Sekcja sprzedażowa⭐](/crm/uploads/instructions/module-thumbnails/mod_a5ce8706dc5c4687f821/thumbnail-0bacb81f9a.png)
Sekcja sprzedażowa buduje trzyczęściowy baner: grafikę po lewej, centralny box z nagłówkiem, opisem, ikoną i przyciskiem oraz grafikę po prawej. Moduł nadaje się m.in. do prezentacji konkretnej kategorii, serii produktów, promocji albo wyróżnienia kluczowej oferty.
W aktualnym źródle modułu dla szerokości do 991 px obie boczne grafiki są ukrywane. Na mobile pozostaje sam centralny box z treścią, ikoną i przyciskiem. Tekst i przycisk są wtedy automatycznie wyśrodkowane.
Poniższy symulator odwzorowuje formularz modułu z Shopera. Zmiany pól LIVE są nanoszone na prawy podgląd bez przeładowania formularza. Fioletowe S użyłem tylko przy dwóch polach wysokości grafik mobile, ponieważ obecny CSS ukrywa te grafiki na telefonie i nie da się uczciwie pokazać ich efektu.
Najbardziej charakterystyczny efekt daje układ z bocznymi grafikami po około 25–30% szerokości oraz centralnym boxem nachodzącym na obie strony. Parametr Nachodzenie boxa na grafiki działa przez ujemny margines środkowej karty — zwiększaj go stopniowo, aż karta wejdzie na grafiki w pożądanym stopniu.
Jeżeli zdjęcie jest mocno kadrowane, ustaw Dopasowanie = Wypełnij i skoryguj kadr polem pozycji, np. center top albo 50% 20%.
Przycisk może prowadzić do kategorii, produktu, landing page lub dowolnego adresu. Po włączeniu opcji Otwórz przycisk w nowej karcie Twig dodaje target="_blank" oraz zabezpieczenie rel="noopener noreferrer".
Pola istnieją w konfiguracji i są wpisywane do CSS, ale aktualny moduł jednocześnie ustawia dla .imod-skinfriend__media display:none przy szerokości do 991 px. Z tego powodu wartości wysokości mobile nie są obecnie widoczne na froncie.
Automatyczny slider powiązanych wpisów blogowych. Moduł dobiera wpisy oznaczone jako „Moduł” na podstawie wspólnych tagów i kategorii, pozwala ustawić sposób sortowania, liczbę slajdów na urządzeniach oraz zawartość kafelka wpisu.
![Miniatura modułu: [im4]⭐ Powiązane wpisy blogowe](/crm/uploads/instructions/module-thumbnails/mod_a84e02f9912abd8d22f1/thumbnail-2b92febe55.png)
Moduł automatycznie wyświetla pod aktualnym artykułem powiązane wpisy blogowe w formie slidera. Dobieranie może wykorzystywać wspólne tagi, wspólną kategorię albo połączenie obu kryteriów.
Aktualnie oglądany wpis jest zawsze pomijany, a analizowane są wyłącznie artykuły blogowe oznaczone w Shoperze jako „Moduł”.
Wpisy powinny mieć poprawnie przypisane tagi i kategorie. Moduł nie tworzy tych powiązań sam — wykorzystuje dane istniejące w blogu.
Poniższy symulator odwzorowuje kolejność i typy pól z konfiguracji Shoper. Zielone LIVE aktualizują podgląd natychmiast. Fioletowe S dotyczą logiki dobierania lub źródła danych, której nie należy sztucznie udawać bez prawdziwych tagów i kategorii sklepu.
| Tryb | Działanie |
|---|---|
| Tylko wspólne tagi | Pokazuje wpisy mające wymaganą liczbę wspólnych tagów |
| Tylko ta sama kategoria | Pokazuje wpisy z co najmniej jedną wspólną kategorią |
| Wspólne tagi i ta sama kategoria | Wpis musi spełnić oba warunki |
| Wspólne tagi lub ta sama kategoria | Wystarczy spełnienie jednego z warunków |
| Najpierw tagi, potem kategoria | Najpierw trafiają wpisy pasujące po tagach, następnie po kategorii |
| Najpierw kategoria, potem tagi | Najpierw trafiają wpisy z tej samej kategorii, następnie pasujące po tagach |
Moduł korzysta z natywnego slidera Storefront. Liczbę widocznych wpisów ustawiasz osobno dla telefonu, tabletu, laptopa i desktopu. Strzałki pojawiają się wtedy, gdy liczba znalezionych wpisów jest większa od liczby mieszczącej się w aktualnym widoku.
Breakpointy używane przez moduł: 576 px dla telefonu, 1000 px dla tabletu i 1440 px dla laptopa.
Każdy kafelek może niezależnie pokazywać zdjęcie główne, kategorię, datę, skróconą treść, tagi, autora i liczbę komentarzy. Licznik komentarzy jest widoczny tylko wtedy, gdy komentarze są również włączone globalnie w ustawieniach bloga.
Liczba analizowanych wpisów określa wielkość puli pobieranej przez ObjectApi.getModuleBlogArticles(). Wartość powinna być większa niż maksymalna liczba wpisów wyświetlanych. Jeżeli jest mniejsza, moduł automatycznie podnosi ją do wartości limitu wyświetlania.
Sortowanie „Najlepiej dopasowane” uwzględnia priorytet wybranego trybu, liczbę wspólnych tagów, wspólne kategorie i datę wpisu.
Moduł na karcie produktu odliczający czas do wysyłki jeszcze tego samego dnia. Uwzględnia osobne godziny graniczne, sobotę, dni wolne, warianty magazynowe oraz pełne ustawienia wyglądu.
![Miniatura modułu: [NEW] ⭐ Zamów teraz, wyślemy dzisiaj⭐](/crm/uploads/instructions/module-thumbnails/mod_ee14e25efc0e0d1deda9/thumbnail-0d75bd21c0.png)
Zamów teraz, wyślemy dzisiaj pokazuje na karcie produktu informację o szybkiej wysyłce i – przed ustawioną godziną graniczną – odlicza pozostały czas.
Po przekroczeniu godziny wysyłki, w niedzielę albo w skonfigurowany dzień wolny licznik znika, a moduł pokazuje komunikat zapasowy. Możesz też użyć osobnej treści weekendowej oraz informacji dla produktów z wariantami.
Symulator korzysta z aktualnej daty i godziny przeglądarki. Jeżeli zmienisz godzinę graniczną dla dzisiejszego dnia, cały moduł po prawej przebuduje się od razu – tak samo jak w źródłowym JavaScript.
W repeaterze Dni wolne dodajesz konkretne daty, w których aktywne odliczanie ma być zablokowane. Bieżąca wersja źródła sprawdza tylko datę; nazwa dnia wolnego jest zapisywana w konfiguracji, ale nie jest wyświetlana klientowi.
Alternatywny tekst weekendowy może być użyty w sobotę, niedzielę oraz w piątek po przekroczeniu godziny granicznej.
Moduł jest pokazywany tylko dla produktów z szybkim czasem dostawy: maksymalnie 1 dzień, maksymalnie 24 godziny albo – gdy API nie zwraca czasu liczbowo – przy dokładnym dopasowaniu nazwy dostawy do pola Nazwa czasu dostawy.
Jeżeli włączysz informację dla wariantów magazynowych, produkt mający warianty może wyświetlić dodatkową notatkę pod komunikatem.
| Warunek | Zachowanie |
|---|---|
| Dostawa ≤ 1 dzień / ≤ 24 h | Moduł może wyświetlić licznik |
| Brak liczbowego czasu, nazwa zgodna z ustawieniem | Moduł może wyświetlić licznik |
| Dzisiejsza data znajduje się na liście dni wolnych | Licznik nieaktywny |
| Niedziela | Licznik nieaktywny |
| Sobota przy wyłączonej wysyłce sobotniej | Licznik nieaktywny |
| Po godzinie granicznej | Komunikat po czasie |
| Piątek po czasie + aktywny tekst weekendowy | Alternatywny komunikat weekendowy |
Prawy podgląd używa syntetycznego produktu z dostawą 1 dzień i aktywnymi wariantami. Nie łączy się z ObjectApi ani eventBus sklepu.
Moduł automatycznie dodaje slider produktów powiązanych do natywnego popupu „dodano do koszyka”. Relacje pobiera z kafelka produktu lub z cache zapisanego na karcie produktu, a dane produktów dociąga przez ProductFetcherApi.
![Miniatura modułu: [NEW]⭐Produkty powiązane "dodaj do koszyka" ⭐](/crm/uploads/instructions/module-thumbnails/mod_c2edc6ed9c46953ae49e/thumbnail-aa1421161b.png)
Moduł rozszerza standardowy popup Shopera pojawiający się po dodaniu produktu do koszyka. Pod informacją o dodanym produkcie automatycznie wstawia sekcję „Powiązane produkty” ze sliderem produktów przypisanych jako powiązane do właśnie dodanego produktu.
Klient może od razu zobaczyć zdjęcie, nazwę i cenę produktu powiązanego oraz przejść do jego karty przez przycisk ze strzałką.
product.relatedProducts i zapisać ich ID do lokalnego cache.addedToBasket i dołącza slider do standardowego modala Shopera.Ten moduł nie ma własnej listy produktów do ręcznego uzupełniania w SVE. Źródłem propozycji są produkty powiązane aktualnego produktu.
Poniższe środowisko testowe odtwarza oba źródłowe sposoby pobierania relacji: atrybut relatedids z kafelka produktu oraz fallback z localStorage.productRelatedCache. Wybierz scenariusz i kliknij Dodaj do koszyka. Kontrolki po lewej służą wyłącznie do testu — nie są polami konfiguracji SVE.
Standardowy modal Shopera zostaje poszerzony do około 740 px na desktopie. Główna część modala pokazuje dodany produkt, a sekcja powiązanych produktów zajmuje pełną szerokość pod nim. Każdy kafelek ma kompaktowy układ: zdjęcie po lewej, nazwa i cena po prawej oraz mały przycisk przejścia do produktu.
Na ekranach do 576 px modal ma prawie pełną szerokość, główna część przechodzi do jednego bloku, a pojedynczy slajd zajmuje około 80% szerokości — dzięki temu widać fragment kolejnego produktu.
source/config.json oraz source/translations.json są puste. Nie ma więc formularza ustawień do odwzorowania. Tytuł sekcji ma fallback „Powiązane produkty”; kod pozwala go nadpisać przez globalne window.imodules.relatedProductsTitle, ale nie jest to pole konfiguracji tego modułu.
AdditionalProducts i trwa dodawanie dodatków, moduł go pomija.data-related-rendered.relatedids z kafelka produktu. Gdy go nie ma, kod korzysta z lokalnego cache productRelatedCache.| Element | Wartość / mechanizm | Znaczenie |
|---|---|---|
| Event startowy | addedToBasket | Uruchamia próbę dodania produktów powiązanych do modala |
| Źródło relacji 1 | product-tile[product-id] → relatedids | Podstawowe źródło ID produktów powiązanych |
| Źródło relacji 2 | localStorage.productRelatedCache | Fallback zapisany przez Twig na karcie produktu |
| Klucz cache | productRelatedCache | Obiekt: ID produktu → tablica ID relacji |
| Pobieranie danych | FeatureSystemApi + ProductFetcherApi | Dociąga dane produktów po ID |
| Tytuł | window.imodules.relatedProductsTitle lub „Powiązane produkty” | Nagłówek sekcji |
| Animacja | 260 ms | Rozwijanie wysokości kontenera .relatedProducts |
| Gap slidera | 12 px | Odstęp pomiędzy slajdami |
| Szerokość slajdu desktop | 40% | Widać ok. 2–2,5 produktu jednocześnie |
| Szerokość slajdu mobile | 80% | Widać jeden produkt i fragment następnego |
Źródłowy Twig zapisuje relacje tylko wtedy, gdy istnieje product_id i produkt ma co najmniej jeden element w relatedProducts. JavaScript nasłuchuje również PageManager.beforeRendered, aby wyczyścić strażnik renderowania przy zmianie widoku.
Responsywny slider banerowy z tekstową nawigacją, opcjonalnymi strzałkami i osobnymi ustawieniami desktop/mobile. Pozwala dodawać slajdy z obrazem, nazwą, linkiem i opcjonalną grafiką mobilną oraz dopasować położenie i wygląd nawigacji.
![Miniatura modułu: [NOWOŚĆ] ⭐ Nowy slider z nawigacją ⭐](/crm/uploads/instructions/module-thumbnails/mod_45a454d3fe2e68f3da42/thumbnail-960419ee15.png)
Moduł tworzy responsywny slider banerowy z nawigacją. Każdy slajd może mieć własną nazwę, link, grafikę desktopową, opcjonalną grafikę mobilną i tekst alternatywny.
Na desktopie nawigację tekstową można umieścić na dole, po lewej albo po prawej stronie. Na mobile dostępna jest dolna nawigacja lub jej całkowite ukrycie. Dodatkowo możesz włączyć strzałki, dopasować ich pozycję i ustawić wygląd całego panelu nawigacji.
Na dostarczonym podglądzie moduł używa dolnej nawigacji nakładanej na dolną krawędź grafiki, wyśrodkowanej względem slajdu. Zakładki „Kosmetyki” i „Pielęgnacja” przełączają slajdy.
Dla spójnego przełączania najlepiej przygotować slajdy o takich samych proporcjach. Na mobile warto użyć osobnej grafiki z własnym kadrem — często kwadratowej lub bardziej pionowej. Moduł nie powinien sztucznie przycinać takiej grafiki do proporcji desktopowej; obraz jest wyświetlany na pełną szerokość z zachowaniem jego naturalnych proporcji.
W symulatorze poniżej lewy panel odwzorowuje kolejność i typy pól z edytora Shoper. Przełącznik Desktop / Mobile nad podglądem pozwala sprawdzić osobne ustawienia responsywne.
Live ⓘ oznacza pole, którego efekt jest od razu widoczny po prawej. Konfiguracja ⓘ dotyczy ustawienia technicznego lub takiego, którego nie należy sztucznie udawać w podglądzie.
Nawigacja desktop pozwala wybrać układ dolny, lewy lub prawy. Dla układu dolnego możesz zdecydować, czy panel ma leżeć na grafice czy pod nią, ustawić jego szerokość oraz wyrównanie. Dla układu bocznego możesz sterować szerokością panelu, odstępem od krawędzi oraz pionowym rozmieszczeniem zakładek.
Nawigacja mobile ma osobne ustawienia. Możesz ją pokazać pod/na grafice albo całkowicie ukryć.
W sekcji Style nawigacji ustawisz kolory, rozmiar tekstu, padding, zaokrąglenie i cień. Wszystkie te parametry można sprawdzić bezpośrednio w podglądzie.
Strzałki mają osobne ustawienia dla desktopu i mobile. Mogą być nakładane bezpośrednio na slajd albo umieszczone w panelu nawigacji. Na pierwszym i ostatnim slajdzie niedostępna strzałka pozostaje na swoim miejscu, ale jest przygaszona i nieaktywna.
Pole Automatyczne przewijanie (niezalecane) jest domyślnie wyłączone. Po włączeniu slider przechodzi między slajdami automatycznie, a kod modułu obsługuje również pauzowanie i wskaźnik postępu.
Sam moduł oznacza automatyczne przewijanie jako „niezalecane”. Jeżeli nie jest potrzebne biznesowo, pozostaw je wyłączone i pozwól klientowi samodzielnie zmieniać slajdy przez zakładki, strzałki lub gest przewijania.
Priorytetowe ładowanie pierwszego slajdu nadaje pierwszej aktywnej grafice wysoki priorytet pobierania. Zgodnie z opisem pola jest to szczególnie przydatne, gdy slider znajduje się wysoko na stronie.
Pole Klasa CSS pozwala dodać jedną lub kilka własnych klas do wrappera modułu. Nazwy wpisuj bez kropki; kilka klas oddziel spacjami.
Responsywny pasek informacyjny nad nagłówkiem z wieloma komunikatami, ikonami, tłem oraz opcjonalnym autoplay i nawigacją.
![Miniatura modułu: [NOWOŚĆ] ⭐ Top bar - pasek nad nagłówkiem⭐](/crm/uploads/instructions/module-thumbnails/mod_a7a84fff2ed29f4c3043/thumbnail-9ba010275e.png)
Moduł wyświetla pasek informacyjny nad nagłówkiem sklepu. Możesz dodać kilka komunikatów z ikonami, ustawić automatyczne przewijanie oraz dopasować wygląd osobno do desktopu i urządzeń mobilnych.
Dodaj 2–3 krótkie komunikaty, np. o darmowej dostawie, promocji i kontakcie. Jeśli komunikatów jest więcej niż jeden, możesz włączyć autoplay albo strzałki nawigacji.
Poniższy symulator odwzorowuje formularz Shopera i zachowanie modułu. Wszystkie pola są oznaczone jako LIVE, ponieważ zgodnie ze źródłowym Twig/JS każde z nich wpływa na output albo zachowanie paska.
Przy tle typu Grafika możesz ustawić osobny obraz dla desktopu, laptopa, tabletu i telefonu. Moduł korzysta z elementu picture i dobiera wariant do szerokości ekranu. Jeśli część wariantów nie jest ustawiona, pierwsza dostępna grafika służy jako fallback.
| Element | Zachowanie źródłowe |
|---|---|
| Breakpoint mobile | CSS mobilny działa do 767 px |
| Grafiki tła | picture: desktop od 1440 px, laptop od 1000 px, tablet od 576 px, mobile do 575 px |
| Ikony komunikatów | renderowane z oryginalnego pliku uploadu |
| Nawigacja | pojawia się w DOM tylko przy więcej niż 1 aktywnym komunikacie |
| Autoplay | timer JS korzysta z wartości Czas wyświetlania komunikatu |
Grafiki kafelki v2 — instrukcja z kreatorem układu, pełną pomocą LIVE/S, breakpointem Laptop i ustawieniami wyglądu. v07 naprawia obsługę pomocy w statycznej sekcji po lewej: odstępy, ustawienia responsywne, unikalne ID oraz wszystkie pozostałe stałe kontrolki otwierają teraz tooltip i pełny opis.
![Miniatura modułu: [UPDATE] ⭐ Grafiki kafelki v2 [09.2026] ⭐](/crm/uploads/instructions/module-thumbnails/mod_df769b9e0bf7b71c2ac4/thumbnail-979fa6fc5b.png)
Grafiki kafelki v2 - GEAR pozwala budować elastyczne siatki banerów / kafelków graficznych. Aktualizacja rozszerza generator o osobny widok Laptop, responsywne odstępy, nowe opcje wyglądu i pozycjonowania oraz dodatkowe ustawienia pojedynczego kafelka.
Kreator nadal obsługuje przeciąganie kafelków, zmianę ich szerokości i wysokości oraz bibliotekę gotowych układów 2–8 banerów. Presety zachowują dotychczasowy kierunek, a układ laptopowy jest automatycznie budowany na bazie wariantu desktopowego i można go później dopracować osobno.
Laptop ma osobny breakpoint do 1440 px. Jeżeli w realnym module kod laptopa pozostanie pusty, front dziedziczy układ desktopowy. Tablet działa do 1024 px, a telefon do 768 px. W generatorze możesz przygotować osobny układ dla każdego z tych widoków.
Rozszerzyliśmy moduł o dodatkowe ustawienia responsywne oraz większą kontrolę nad wyglądem i zachowaniem pojedynczych kafelków.
Post blogowy PRO — instrukcja sekcja po sekcji; v09 naprawia ładowanie danych interaktywnej instrukcji w CRM przez osadzenie data_json bezpośrednio w Shadow DOM.
Moduł przejmuje istniejący wpis blogowy Shopera i rozbudowuje jego prezentację: układ boxów, typografię, główną grafikę, spis treści, udostępnianie, obrazy, przyciski, callout, cytaty, linki produktowe, FAQ oraz dane strukturalne. Poniżej wszystkie funkcje są pokazane jedna pod drugą. Każda sekcja ma własny opis, ustawienia po lewej i odpowiadającą im wizualizację po prawej.
toggle-faq i nagłówka H4.Aktualizacja rozszerzyła moduł o rozbudowaną prezentację artykułu i nowe narzędzia nawigacyjne.
Inteligentny upselling w koszyku dobiera produkty na podstawie reguł produktowych, kategorii, produktów powiązanych oraz kolekcji zapasowej, a następnie prezentuje je w konfigurowalnym sliderze pod koszykiem.
Moduł automatycznie wyświetla pod listą produktów w koszyku dodatkowy slider z rekomendacjami. Produkty mogą pochodzić z własnych reguł, produktów powiązanych albo z kolekcji zapasowej. Moduł na bieżąco reaguje na zmiany koszyka, odrzuca produkty już znajdujące się w koszyku i ponownie sprawdza filtry przed pokazaniem rekomendacji.
Poniżej konfiguracja jest rozbita funkcjonalnie: najpierw wybór źródła produktów, następnie reguły produktowe i kategoriowe, filtry, slider oraz wygląd kafelka. W każdej sekcji po lewej znajduje się konfiguracja zbliżona do panelu Shopera, a po prawej praktyczna wizualizacja działania.
Moduł działa wyłącznie w kontekście koszyka i ustawia swoją sekcję bezpośrednio po natywnej liście produktów koszyka. Jeśli koszyk jest pusty albo po zastosowaniu reguł i filtrów nie ma żadnych rekomendacji, sekcja pozostaje ukryta.
W tej sekcji ustawiasz tytuł, liczbę rekomendacji i przede wszystkim sposób, w jaki moduł ma szukać produktów. Tryb inteligentny łączy wszystkie źródła w ustalonej kolejności: najpierw reguły produktowe, następnie reguły kategorii, później produkty powiązane, a brakujące miejsca może uzupełnić kolekcja zapasowa.
Reguła produktowa odpowiada na proste pytanie: jeżeli klient ma w koszyku konkretny produkt, z jakiej kolekcji mamy dobrać mu dodatki? Możesz przygotować wiele takich reguł. Gdy kilka reguł pasuje jednocześnie, moduł przeplata produkty z aktywnych kolekcji zamiast opróżniać najpierw tylko jedną z nich.
Reguły kategorii działają podobnie, ale zamiast konkretnego produktu sprawdzają kategorię produktu znajdującego się w koszyku. To wygodne rozwiązanie, gdy wiele produktów z jednej kategorii powinno prowadzić do tej samej kolekcji dodatków.
Filtry są stosowane do kandydatów ze wszystkich aktywnych źródeł. Moduł nie rekomenduje produktów, które są już w koszyku. Dodatkowo możesz wymagać dostępności, ograniczyć rekomendacje do promocji albo wykluczyć promocje oraz ustawić przedział ceny finalnej.
Ta sekcja odpowiada już za sposób prezentacji gotowych rekomendacji. Desktop, tablet i telefon mają osobną liczbę produktów na widoku. Możesz także ustawić liczbę produktów przesuwanych jednym kliknięciem, odstęp, strzałki, szybkość animacji oraz tryb Slide lub Loop.
Na końcu ustawiasz sam wygląd pojedynczego produktu. Moduł korzysta z natywnej struktury kafelka Storefront, ale pozwala zmienić rozmiar miniatury, widoczność etykiety rabatu, tryb CTA oraz podstawową typografię nazwy i ceny.
Źródła nie są mieszane przypadkowo. W trybach wykorzystujących reguły najpierw brane są kolekcje przypisane do konkretnych produktów, potem kolekcje przypisane do kategorii. Produkty powiązane są kolejnym źródłem w trybie inteligentnym. Kolekcja zapasowa jest pobierana dopiero wtedy, gdy wcześniejsze źródła nie dają wystarczającej liczby kandydatów. Kandydaci z kilku aktywnych źródeł w tej samej grupie są przeplatani, a duplikaty są usuwane.
| Tryb | Kolejność doboru |
|---|---|
| Inteligentny | Reguły produktu → reguły kategorii → produkty powiązane → kolekcja zapasowa |
| Powiązane + zapasowa | Produkty powiązane → kolekcja zapasowa |
| Reguły + zapasowa | Reguły produktu → reguły kategorii → kolekcja zapasowa |
| Tylko kolekcja zapasowa | Wyłącznie wskazana kolekcja zapasowa |
Jeżeli wybierzesz tryb Przycisk Dodaj do koszyka Shopera, moduł może dodać od razu produkt bez wariantów, jeśli jest kupowalny i ma poprawny wariant magazynowy. Produkt posiadający warianty celowo dostaje link do karty produktu. Niedostępny produkt otrzymuje wyłączony przycisk.
13.10.2026 — Pierwsza kompletna instrukcja modułu
Zakładki na karcie produktu automatycznie tworzą nawigację z modułów osadzonych we wskazanej strukturze kontenerów.
Zakładki na karcie produktu porządkują istniejące moduły treści w jedną nawigację. Klient wybiera zakładkę, a moduł pokazuje przypisaną sekcję bez przeładowywania strony. Do uruchomienia potrzebne są odpowiednie klasy kontenerów na stronie produktu.
Wybierasz kolejne sekcje treści produktu przy pomocy czytelnych zakładek. Moduł korzysta z istniejących sekcji, dlatego nie trzeba kopiować ich zawartości.
Podpisy przycisków powstają z nagłówków modułów znajdujących się we wskazanym kontenerze. Aktualizacja nazwy sekcji zmienia również nazwę odpowiadającej jej zakładki.
Po uruchomieniu widoczna jest pierwsza dostępna sekcja. Kliknięcie innego przycisku ukrywa pozostałe moduły i wyróżnia aktywną zakładkę.
Osobno ustawiasz odstępy, zaokrąglenie, padding i wielkość tekstu. Dopasowujesz zakładki do kolorystyki swojego sklepu.
Kolor tekstu, tło i obramowanie aktywnej zakładki mają własne ustawienia. Dla zwykłego i aktywnego przycisku można zachować przezroczyste tło.
Możesz pominąć moduły bez nagłówka lub wyświetlić je jako zakładki pomocnicze. Opcjonalnie ukryjesz oryginalne nagłówki nad treścią każdej sekcji.
pnavcontent-items, a moduł sam tworzy przyciski na podstawie nazw ich nagłówków.Najpierw przygotuj strukturę kontenerów w edytorze strony produktu i dodaj wymagane klasy CSS. Następnie umieść moduł „Zakładki na karcie produktu” oraz moduły treści we właściwych miejscach. Po zapisaniu sprawdź, czy przyciski pobierają nazwy nagłówków i przełączają odpowiadające im sekcje.
.pnavcontent. Moduł wyszukuje w nim element .pnavcontent-items, a następnie bezpośrednio lub głębiej umieszczone moduły .module. Wpisy nawigacji otrzymują podpisy z .module__header-title.pnavcontent — przypisz do nadrzędnej kolumny obejmującej cały układ zakładek, obejmującej jednocześnie moduł nawigacji i kontener modułów treści.pnavcontent-items — przypisz do kolumny zawierającej moduły treści zakładek, w którym znajdują się przełączane moduły..module__header-title poszczególnych modułów.pnavcontent-items.Wskazówka: w SVE warto nadawać własne, czytelne nazwy kolumnom, wierszom i sekcjom, żeby łatwo je później rozpoznawać. Nazwy na schemacie są tylko przykładowe — nie wpływają na działanie modułu.
Przykładowy układ w SVE. Nazwy kolumn i wierszy możesz ustawić dowolnie — poniżej użyliśmy własnych nazw, by łatwiej rozpoznać elementy:
Nazwy „Opis produktu”, „Nawigacja” czy „Zawartość zakładek” są tylko przykładami. Warto nazywać elementy po swojemu, żeby łatwiej je odnaleźć w edytorze. Pierwszy wiersz odpowiada za nawigację, drugi za zawartość.
pnavcontent (bez kropki) i zapisz ustawienia tej głównej kolumny.pnavcontent-items (bez kropki).pnavcontentpnavcontent-itemsSchemat pokazuje przykładową strukturę SVE, a nie konkretny układ narzucony szablonowi. Nadrzędnym elementem może być sekcja albo kolumna, pod warunkiem że w wygenerowanym DOM [data-pnavtabs] znajduje się wewnątrz .pnavcontent, zaś moduły treści są wewnątrz .pnavcontent-items. Nie wpisuj pnavcontent wyłącznie na Kolumnie 1 — wtedy Kolumna 2 może znaleźć się poza wspólnym kontenerem.
Klasy nadajesz w SVE w ustawieniach konkretnego elementu: najpierw głównej kolumny obejmującej oba wiersze (przykładowo nazwanej „Opis produktu”) (pnavcontent), potem kolumny z modułami treści (w przykładzie „Kolumna 2”) (pnavcontent-items). Jeśli nawigacja nie działa, sprawdź w wygenerowanym HTML, czy oba elementy są prawidłowo zagnieżdżone. Wpisuj klasy bez poprzedzającej kropki.
Nazwy w SVE są dowolne: dla porządku warto samodzielnie nazywać kolumny, wiersze i sekcje. W działaniu zakładek decydują wymagane klasy CSS, nie nazwy elementów.
PageManager.loaded..pnavcontent lub .pnavcontent-items, moduł nie tworzy działającej listy zakładek..pnavcontent-items, dlatego w tym kontenerze umieszczaj tylko treści przeznaczone do przełączania.pnavcontent do wspólnego kontenera zawierającego moduł zakładek oraz grupę modułów treści.pnavcontent-items do kontenera grupującego przełączane moduły..module__header-title.