# DataFirefly Tabela rozmiarów: dokumentacja

> Przegląd DataFirefly Tabela rozmiarów dodaje do twojego sklepu PrestaShop kompletny system modułowych tabel rozmiarów przypisywanych per kategoria, producent albo produkt, z tabelami przeliczeń EU/US/UK/FR/JP, interaktywnym kalkulatorem rekomendacji rozmiaru, dedykowaną indeksowalną…

- Strona: <https://www.datafirefly.com/pl/documentation/guide-des-tailles-prestashop/>
- Język: pl
- Zaktualizowano: 2026-09-01
- Inne języki: [fr](https://www.datafirefly.com/documentation/guide-des-tailles-prestashop/index.md), [en](https://www.datafirefly.com/en/documentation/guide-des-tailles-prestashop/index.md), [es](https://www.datafirefly.com/es/documentation/guide-des-tailles-prestashop/index.md), [de](https://www.datafirefly.com/de/documentation/guide-des-tailles-prestashop/index.md), [it](https://www.datafirefly.com/it/documentation/guide-des-tailles-prestashop/index.md), [nl](https://www.datafirefly.com/nl/documentation/guide-des-tailles-prestashop/index.md), [pt](https://www.datafirefly.com/pt/documentation/guide-des-tailles-prestashop/index.md)
- Indeks: <https://www.datafirefly.com/pl/documentation/llms.txt>

## Przegląd

**DataFirefly Tabela rozmiarów** dodaje do twojego sklepu PrestaShop kompletny system modułowych tabel rozmiarów przypisywanych per kategoria, producent albo produkt, z tabelami przeliczeń EU/US/UK/FR/JP, interaktywnym kalkulatorem rekomendacji rozmiaru, dedykowaną indeksowalną stroną SEO per kategoria oraz widgetem opinii po zakupie ze zbiorczym wskaźnikiem odchylenia rozmiarówki.

Moduł celuje w sklepy odzieżowe i obuwnicze, gdzie ponad 20% zwrotów wynika z problemu z rozmiarem. Zamienia to tarcie w spokojną ścieżkę zakupową: klient automatycznie widzi właściwą tabelę, może wpisać swoje wymiary i dostać spersonalizowaną rekomendację, a ty zbierasz konkretne opinie, które pozwalają wykrywać źle wyskalowane produkty.

### Zgodność

- PrestaShop 8.0.x, 8.1.x, 8.2.x, 9.0.x
- PHP 8.1, 8.2, 8.3
- Multisklep (wszystkie przypisania są ograniczone zakresem `id_shop`)
- Polylang FR/EN/ES/DE/IT/NL/PL gotowe od ręki
- Szablony classic, hummingbird oraz szablony własne (7 różnych miejsc wyświetlania)

## Instalacja

1. Wgraj ZIP `dfsizeguide.zip` przez **Moduły → Menedżer modułów → Wgraj moduł**.
2. Kliknij **Instaluj**. Trzynaście gotowych tabel (odzież damska i męska góra i dół, sukienki, biustonosze, obuwie damskie, męskie i dziecięce, odzież dziecięca, rękawiczki, czapki, pierścionki, paski) jest tworzonych automatycznie w 7 językach, a domyślne przypisanie powstaje na tabeli odzieży damskiej.
3. Zaraz po instalacji zakładka „Tabela rozmiarów” pojawia się na wszystkich kartach produktu, bez dodatkowej konfiguracji.
4. Przejdź do **Moduły → DataFirefly Tabela rozmiarów → Konfiguruj**, aby dostosować miejsca wyświetlania, domyślną jednostkę i włączone funkcje.

## Kluczowe pojęcia

### Pięciopoziomowy mechanizm wyboru tabeli

Kiedy klient wchodzi na kartę produktu, moduł szuka tabeli do wyświetlenia, schodząc po ściśle określonym priorytecie:

1. **Produkt**: jeśli przypisałeś tabelę wprost do tego konkretnego produktu, wygrywa ona.
2. **Kategoria + Producent**: w przeciwnym razie tabela przypisana do pary złożonej z kategorii produktu i jego marki. Ponieważ jest bardziej szczegółowy niż każdy wymiar osobno, ten poziom ma pierwszeństwo przed dwoma kolejnymi. Kategorie są przechodzone od najgłębszej do najbardziej ogólnej.
3. **Producent**: w przeciwnym razie tabela przypisana do marki produktu.
4. **Kategoria**: w przeciwnym razie pierwsza kategoria produktu, która ma tabelę, zaczynając od najgłębszej, z poszanowaniem szczegółowości.
5. **Domyślna**: w ostateczności tabela oznaczona jako globalny fallback.

Ta hierarchia pozwala utrzymywać jedną tabelę per marka albo per dział bez ruszania pojedynczych kart produktu, zachowując przy tym możliwość punktowego nadpisania.

### Typy kolumn

Każda tabela składa się z kolumn określonego typu:

- **Kolumna „rozmiar”**: jedna wartość tekstowa na wiersz (S, M, 38, XL). Używana do przeliczeń międzynarodowych (EU, US, UK, FR, JP).
- **Kolumna „wymiar”**: liczbowy zakres min/max na wiersz (na przykład obwód klatki piersiowej 88-92 cm). Używana do wskazania wymiarów odpowiadających każdemu rozmiarowi.

Interaktywny kalkulator opiera się wyłącznie na kolumnach „wymiar” przy ustalaniu rekomendowanego rozmiaru.

## Konfiguracja

### Miejsca wyświetlania na karcie produktu

Moduł udostępnia 7 miejsc włączanych niezależnie w **Konfiguruj → Miejsca na karcie produktu**:

- **Zakładka produktu** (włączona domyślnie, zalecana): hook `displayProductExtraContent`, dodaje osobną zakładkę obok „Opisu” i „Szczegółów”. Działa w niemal wszystkich szablonach PS 1.7+.
- **Pod ceną**: hook `displayProductPriceBlock` (typ `after_price`), renderuje kompaktowy link tuż pod ceną.
- **Przy przycisku „Dodaj do koszyka”**: hook `displayProductActions`, renderuje kompaktowy przycisk.
- **Pod informacjami o produkcie**: hook `displayProductAdditionalInfo`, renderuje wyróżniony przycisk.
- **W bloku zaufania**: hook `displayReassurance`, wpasowuje się wizualnie w twoje pozostałe argumenty (dostawa, zwroty).
- **Po zdjęciach produktu**: hook `displayAfterProductThumbs`, renderuje kompaktowy przycisk tuż pod galerią.
- **Na dole strony produktu**: hook `displayFooterProduct`, renderuje wyróżniony przycisk w stopce.

Możesz włączyć kilka miejsc równolegle: modal tabeli jest tworzony w DOM tylko raz (zabezpieczenie przed duplikatem), a dodatkowe przyciski otwierają ten sam modal.

Zakładka produktu to jedyne miejsce, które renderuje tabelę _inline_. Pozostałych 6 miejsc renderuje przycisk otwierający modal.

### Ustawienia ogólne

- **Domyślna jednostka**: centymetry albo cale. Klient może przełączać w locie, preferencja jest uwzględniana w obliczeniach.
- **Interaktywny kalkulator**: włącza wpisywanie wymiarów i rekomendację rozmiaru (włączony domyślnie).
- **Opinie klientów po zakupie**: włącza widget pytający klienta, czy rozmiar był odpowiedni (włączony domyślnie).
- **Dane strukturalne JSON-LD**: włącza wstrzykiwanie znaczników Schema.org poprawiających widoczność w wyszukiwarce (włączone domyślnie).
- **Kolor akcentu**: kolor przycisków, aktywnej jednostki i wyróżnionego wiersza. Dopasuj go do swojego motywu; odcień najechania kursorem jest wyliczany automatycznie.
- **Slug strony SEO**: prefiks adresu dedykowanych stron z tabelami (domyślnie `size-guide`, do przetłumaczenia na `tabela-rozmiarow`, jeśli chcesz polski adres).

## Tworzenie i edycja tabeli

Menu **Moduły → Tabele rozmiarów → Tabele**. Kliknij „Dodaj”, aby utworzyć nową tabelę, albo ikonę ołówka, aby edytować istniejącą.

### Pola tabeli

- **Kod wewnętrzny**: unikalny identyfikator techniczny (na przykład `damskie-sukienki-2026`). Używany w adresach SEO i w logach.
- **Typ**: odzież góra, odzież dół, sukienka, obuwie albo własny.
- **Nazwa**: wielojęzyczna etykieta pokazywana klientom (tytuł zakładki, tytuł modala, h1 strony SEO).
- **Wstęp (HTML)**: wielojęzyczna treść wyświetlana nad tabelą.
- **Instrukcja pomiaru (HTML)**: zwijana ramka wyjaśniająca, jak wykonać każdy pomiar.
- **Stopka (HTML)**: wielojęzyczna treść pod tabelą (zastrzeżenie, link do polityki zwrotów i tak dalej).
- **Meta title i meta description**: dla dedykowanej strony SEO.
- **Aktywna**: przełącznik włącz/wyłącz. Nieaktywna tabela nigdy nie jest serwowana, nawet jeśli jest przypisana.

### Edycja tabeli

Pod formularzem tabeli edytor wizualny pozwala zbudować siatkę:

1. Kliknij **Kolumna rozmiaru**, aby dodać kolumnę tekstową. Wprowadź kod (na przykład `eu`, `intl`) i wielojęzyczną etykietę.
2. Kliknij **Kolumna wymiaru**, aby dodać kolumnę liczbową. Wprowadź kod (na przykład `chest_cm`) i jednostkę (cm, cale, mm).
3. Kliknij **Wiersz**, aby dodać wiersz. Uzupełnij komórki: zwykły tekst dla kolumn „rozmiar”, wartości min/max dla kolumn „wymiar”.
4. Kliknij **Zapisz**. Zapis odbywa się w atomowej transakcji SQL: albo zapisuje się wszystko, albo nic.

### Duplikowanie tabeli

Przycisk **Duplikuj** na liście kopiuje w pełni tabelę, jej tłumaczenia, kolumny wraz z etykietami, wiersze i wszystkie komórki. Przydatne, gdy chcesz utworzyć wariant istniejącej tabeli zamiast zaczynać od pustej.

Dwie rzeczy warto wiedzieć. Przypisania nie są kopiowane: są unikalne dla każdego celu, więc ich duplikowanie odebrałoby cele tabeli źródłowej. Kopia powstaje jako **nieaktywna**, żeby nie mogła zostać pokazana przed twoją weryfikacją. Kod wewnętrzny jest wyprowadzany automatycznie (`damskie-gora` staje się `damskie-gora-copy`), ponieważ musi pozostać unikalny.

## Przypisywanie tabeli

Menu **Moduły → Tabele rozmiarów → Przypisania**.

1. Wybierz tabelę do przypisania z listy.
2. Wybierz typ celu: Domyślny (globalny fallback), Kategoria, Producent, Kategoria + Producent albo Produkt.
3. Zależnie od typu pojawi się drugie pole do wskazania kategorii (w drzewie z wcięciami), marki (lista rozwijana) albo ID produktu (wpis bezpośredni).
4. Kliknij **Dodaj / Aktualizuj**. Jeśli przypisanie dla tego celu już istnieje, zostaje nadpisane (upsert).

W multisklepie wszystkie przypisania są ograniczone zakresem sklepu. Możesz mieć inną tabelę dla tej samej kategorii w dwóch sklepach tej samej grupy.

### Edycja przypisania

Ołówek na końcu wiersza wczytuje przypisanie z powrotem do formularza, wraz z jego tabelą, typem celu i celem. Możesz wtedy zmienić tabelę, ale też przenieść przypisanie na inny cel albo zamienić przypisanie proste w kombinację kategoria + producent. Edytowany wiersz jest wyróżniony na liście, a przycisk Anuluj pozwala wyjść bez zmian.

Przeniesienie przypisania na cel zajęty już przez inne jest odrzucane z czytelnym komunikatem, ponieważ jeden cel może mieć tylko jedną tabelę.

## Kalkulator rozmiaru

Kalkulator pojawia się pod tabelą, wyłącznie jeśli tabela ma co najmniej jedną kolumnę „wymiar”.

### Algorytm punktacji

Klient wpisuje swoje wymiary w pola (jedno pole na kolumnę „wymiar”). Po wysłaniu:

1. Wartości są normalizowane do centymetrów (automatyczne przeliczenie, jeśli użytkownik wybrał cale: razy 2,54).
2. Dla każdego wiersza tabeli moduł liczy punktację: **+2 punkty**, jeśli wymiar klienta mieści się dokładnie w zakresie min/max komórki, **+1 punkt**, jeśli jest blisko (w granicach ±5% zakresu), **0 punktów** w pozostałych przypadkach.
3. Wiersz z najwyższą punktacją zostaje zwycięzcą.
4. Przy remisie wybierany jest wiersz, którego zakresy są najlepiej wyśrodkowane na wartościach klienta.
5. Rekomendowany rozmiar jest pobierany w pierwszej kolejności z kolumny `eu`, następnie `fr`, `intl`, `uk`, `us` i `jp`.

### Informacja zwrotna dla użytkownika

Kalkulator pokazuje rekomendowany rozmiar z procentowym wskaźnikiem pewności, trzy najlepsze kandydatury wraz z ich punktacją, podświetlenie rekomendowanego wiersza w tabeli powyżej oraz listę wymiarów, które nie pasują do żadnego wiersza (z ostrzeżeniem).

## Opinie klientów po zakupie

Widget „Czy rozmiar był odpowiedni?” pojawia się na dole karty produktu z pięcioma odpowiedziami: za mały, nieco za mały, idealny, nieco za duży, za duży. Renderuje się wyłącznie przy spełnieniu następujących warunków:

- Klient jest zalogowany (aktywna sesja).
- Klient faktycznie kupił ten produkt (złączenie z `orders` i `order_detail`, poprawny status).
- Klient nie wystawił jeszcze opinii o tym produkcie.

Kontrola dostępu działa w całości po stronie serwera, bez ryzyka obejścia.

### Pulpit opinii

Menu **Moduły → Tabele rozmiarów → Opinie klientów**. Podsumowanie nad tabelą pokazuje liczbę odpowiedzi w każdej z pięciu kategorii. Poniżej znajduje się pełna lista opinii per produkt, z ID klienta, kupionym rozmiarem i datą.

### Wskaźnik odchylenia

Dla każdego produktu z co najmniej 3 opiniami liczony jest wskaźnik odchylenia:

```
wskaznik = ((za_duzy × 2 + nieco_za_duzy) − (za_maly × 2 + nieco_za_maly)) / suma
```

Wartość **dodatnia** oznacza, że produkt systematycznie mierzy dużo (do przeskalowania o jeden stopień w dół). Wartość **ujemna** oznacza, że mierzy mało (do przeskalowania o jeden stopień w górę). Wartość bliska zeru oznacza poprawną rozmiarówkę.

## Dedykowana strona SEO

Moduł udostępnia publiczną trasę per kategoria: `/{slug}/{category-link-rewrite}`, gdzie `{slug}` to skonfigurowany prefiks (domyślnie `size-guide`).

Przykład: `https://twoj-sklep.pl/size-guide/sukienki-damskie`

Strona zawiera okruszki nawigacyjne, nagłówek h1 tabeli, wstęp, instrukcję pomiaru i pełną tabelę, kalkulator (jeśli włączony), stopkę HTML tabeli oraz znaczniki JSON-LD `WebPage` Schema.org, które pomagają Google zrozumieć, że strona jest poradnikiem praktycznym.

Meta title i meta description pochodzą z pól SEO tabeli. Ustaw je starannie, żeby przechwycić zapytania z długiego ogona w rodzaju „tabela rozmiarów sukienki damskie”.

## Wielojęzyczność i multisklep

Moduł jest wielojęzyczny na poziomie tabel (nazwa, wstęp, instrukcja, stopka, meta), na poziomie etykiet kolumn oraz na poziomie etykiet Polylang w adresach URL.

W multisklepie każde przypisanie (tabela do celu) jest ograniczone zakresem `id_shop`. Możesz więc wyświetlać tabelę A dla kategorii „Obuwie” w sklepie polskim, a tabelę B dla tej samej kategorii w sklepie niemieckim.

## Struktura techniczna

### Baza danych

Tabele z prefiksem `dfsg_`: `dfsg_guide`, `dfsg_guide_lang`, `dfsg_column`, `dfsg_column_lang`, `dfsg_row`, `dfsg_cell`, `dfsg_assignment` i `dfsg_feedback`. Wszystkie są czysto usuwane przy deinstalacji.

### Wykorzystywane hooki

- `actionFrontControllerSetMedia`: wstrzyknięcie CSS i JS na froncie
- `displayBackOfficeHeader`: wstrzyknięcie CSS i JS w panelu
- `displayProductExtraContent`: zakładka na karcie produktu (zalecana)
- `displayProductPriceBlock`, `displayProductActions`, `displayProductAdditionalInfo`, `displayReassurance`, `displayAfterProductThumbs`, `displayFooterProduct`: miejsca alternatywne
- `displayHeader`: wstrzyknięcie JSON-LD na kartach produktu
- `actionValidateOrder`: wyzwalacz pod ewentualne przypomnienia (v2)
- `moduleRoutes`: dedykowana strona SEO

## FAQ

### Tabela nie pokazuje się na mojej karcie produktu, co zrobić?

Sprawdź najpierw w **Konfiguruj → Miejsca na karcie produktu**, czy włączone jest co najmniej jedno miejsce (domyślnie Zakładka produktu). Jeśli twój własny szablon nie renderuje natywnych hooków PrestaShop, włącz kilka miejsc równolegle: co najmniej jedno z 7 powinno zadziałać. Sprawdź też, czy istnieje co najmniej jedna aktywna tabela i domyślne przypisanie w **Tabele rozmiarów → Przypisania**.

### Czy mogę zaimportować tabele z pliku CSV?

Na razie nie. Edytor wizualny pozwala budować i modyfikować tabele na bieżąco, kolumna po kolumnie i wiersz po wierszu. Import CSV jest rozważany w późniejszej wersji.

### Czy kalkulator działa bez JavaScriptu?

Nie, kalkulator jest interaktywny i potrzebuje JavaScriptu do wywołania AJAX do serwera. Statyczna tabela wyświetla się natomiast bez zarzutu bez JS, co chroni dostępność i widoczność w wyszukiwarce.

### Czy istnieje ryzyko zdublowanych znaczników JSON-LD?

Nie. Hook `displayHeader` emituje jeden skrypt JSON-LD na stronę produktu, a dedykowana strona SEO ma własne, odrębne znaczniki `WebPage`. Walidator Schema.org od Google nie zgłasza żadnych duplikatów.

### Czy moduł jest zgodny z migracją PrestaShop 8 na 9?

Tak. Moduł deklaruje `ps_versions_compliancy` od 8.0.0 do 9.99.99, korzysta z klas ObjectModel i HelperForm, które pozostają wspierane w PS 9, i nie używa żadnego przestarzałego API.

### Jak usunąć wszystkie dane modułu?

Deinstalacja przez Menedżer modułów usuwa wszystkie tabele `dfsg_*` i wszystkie konfiguracje `DFSG_*`. W bazie nie zostaje żaden ślad.

## Wsparcie

E-mail: [support@datafirefly.com](mailto:support@datafirefly.com). Odpowiedź w ciągu 5 dni roboczych, po francusku albo angielsku.
