# Licznik sprzedaży Shopware 6: przewodnik instalacji i konfiguracji

> Ten przewodnik obejmuje instalację, konfigurację i personalizację wtyczki DfSalesCounter, która pokazuje na każdej karcie produktu, ile razy produkt został już sprzedany, na podstawie rzeczywistych zamówień twojego sklepu Shopware 6. Wymagania…

- Strona: <https://www.datafirefly.com/pl/documentation/licznik-sprzedazy-shopware/>
- Język: pl
- Zaktualizowano: 2026-08-11
- Inne języki: [fr](https://www.datafirefly.com/documentation/compteur-ventes-shopware/index.md), [en](https://www.datafirefly.com/en/documentation/compteur-ventes-shopware/index.md), [es](https://www.datafirefly.com/es/documentation/compteur-ventes-shopware/index.md), [de](https://www.datafirefly.com/de/documentation/compteur-ventes-shopware/index.md), [it](https://www.datafirefly.com/it/documentation/compteur-ventes-shopware/index.md), [nl](https://www.datafirefly.com/nl/documentation/compteur-ventes-shopware/index.md), [pt](https://www.datafirefly.com/pt/documentation/compteur-ventes-shopware/index.md)
- Indeks: <https://www.datafirefly.com/pl/documentation/llms.txt>

Ten przewodnik obejmuje instalację, konfigurację i personalizację wtyczki **DfSalesCounter**, która pokazuje na każdej karcie produktu, ile razy produkt został już sprzedany, na podstawie rzeczywistych zamówień twojego sklepu Shopware 6.

## Wymagania

- Shopware 6.5.x, 6.6.x lub 6.7.x w instalacji własnej. Shopware Cloud (SaaS) nie przyjmuje wtyczek serwerowych.
- PHP 8.1 lub nowszy.
- Motyw witryny pochodny od motywu Storefront Shopware albo motyw własny, który zachowuje standardowe bloki Twig bloku zakupu.
- Dostęp do wiersza poleceń jest zalecany do kompilacji motywu, ale instalacja z panelu administracyjnego również działa.

## Instalacja

### Wgranie ZIP z panelu administracyjnego

1. W panelu administracyjnym Shopware otwórz _Rozszerzenia_, a następnie _Moje rozszerzenia_.
2. Kliknij _Wgraj rozszerzenie_ i wybierz plik `DfSalesCounter-1.0.0.zip`.
3. Gdy wtyczka pojawi się na liście, kliknij _Zainstaluj_, a potem włącz ją przełącznikiem.
4. Przekompiluj motyw w _Treści_, _Motywy_, wybierając swój motyw i klikając _Przekompiluj motyw_. Ten krok jest potrzebny tylko raz, ponieważ wtyczka dostarcza arkusz stylów witryny.

### Z wiersza poleceń

Umieść katalog `DfSalesCounter` w `custom/plugins/` swojej instalacji, a następnie wykonaj:

```
bin/console plugin:refresh
bin/console plugin:install --activate DfSalesCounter
bin/console theme:compile
bin/console cache:clear
```

W środowisku z procesem wdrożeniowym kompilacja motywu zwykle należy już do standardowych kroków.

## Konfiguracja

Strona konfiguracji znajduje się w _Rozszerzenia_, _Moje rozszerzenia_, przycisk _..._ po prawej stronie DataFirefly Sales Counter, a następnie _Konfiguruj_. Selektor u góry strony pozwala wybrać kanał sprzedaży, którego dotyczy konfiguracja: każdy kanał może mieć własny próg, własny tekst i własne położenie.

### Zakładka Ogólne

- **Włącz licznik sprzedaży**: główny przełącznik. Wyłączony, żadne zapytanie nie jest wykonywane i żadna plakietka nie jest renderowana.
- **Tryb zliczania**: _Sprzedana ilość_ sumuje wszystkie zamówione ilości produktu. _Liczba zamówień_ liczy odrębne zamówienia, które zawierały produkt. Pierwszy tryb podkreśla wolumen, drugi liczbę różnych przekonanych klientów.
- **Uwzględniane zamówienia**: _Wszystkie zamówienia_ daje surową liczbę. _Wyklucz zamówienia anulowane_ odrzuca te, których status maszyny stanów to `cancelled`. _Tylko zamówienia opłacone_ zachowuje wyłącznie zamówienia z transakcją w statusie `paid` lub `paid_partially`.
- **Minimalny próg wyświetlania**: poniżej tej wartości żadna plakietka się nie pojawia. Wartość domyślna to 5. Próg 0 jest traktowany jak 1, plakietka nigdy nie jest renderowana dla produktu bez sprzedaży.
- **Okres w dniach**: ogranicza zliczanie do ostatnich X dni, na podstawie daty zamówienia. Wartość 0 oznacza sumę od początku.
- **Sumuj sprzedaż wszystkich wariantów**: dodaje sprzedaż produktu nadrzędnego i wszystkich jego wariantów. Zalecane przy katalogu odzieżowym lub rozmiarowym, do wyłączenia, gdy każdy wariant odpowiada innemu zastosowaniu.
- **Licz tylko zamówienia bieżącego kanału sprzedaży**: zapobiega temu, by sklep B2B lub kanał eksportowy zawyżał liczby pokazywane w sklepie detalicznym.

### Zakładka Wyświetlanie

- **Położenie na karcie produktu**: _Pod nazwą produktu_, _Pod ceną_ albo _Pod blokiem zakupu_, czyli na dole bloku, poniżej przycisku dodania do koszyka.
- **Styl wizualny**: _Plakietka_ renderuje pigułkę z obramowaniem, _Zwykły tekst_ renderuje wiersz bez ramki, _Pasek_ renderuje blok na pełną szerokość z kolorowym paskiem bocznym.
- **Ikona**: płomień, koszyk, ptaszek albo brak. Ikony są w SVG inline, żaden font ikon nie jest ładowany.
- **Kolor akcentu**: pozostawiony pusty, używany jest kolor podstawowy motywu. Wypełniony, zasila zmienną CSS `--df-sales-counter-accent` na elemencie plakietki.
- **Separator tysięcy**: wąska spacja, przecinek, kropka albo brak. Przydatny, gdy tylko liczniki przekroczą tysiąc.
- **Tekst niestandardowy**: patrz następna sekcja.
- **Czas życia pamięci podręcznej w sekundach**: domyślnie 900. Wartość 0 wyłącza pamięć podręczną i odpytuje bazę przy każdym wyświetleniu karty.

## Personalizacja tekstu

### Tekst globalny z konfiguracji

Pole _Tekst niestandardowy_ przyjmuje zdanie ze znacznikiem `%count%` w miejscu, w którym ma pojawić się liczba. Przykład: `Ten model rozszedł się %count% razy w tym miesiącu`. Ten tekst jest wspólny dla wszystkich języków kanału sprzedaży. Przed wyrenderowaniem jest oczyszczany, co pozwala na proste znaczniki takie jak ``, ale blokuje wszelkie skrypty.

### Teksty per język przez fragmenty

Pozostaw pole _Tekst niestandardowy_ puste, aby sterować tekstem język po języku. Otwórz _Ustawienia_, _Sklep_, _Fragmenty_, a następnie wyszukaj `dfSalesCounter`. Dostępne są cztery klucze:

- `dfSalesCounter.badge.quantitySingular` i `dfSalesCounter.badge.quantityPlural`, używane w trybie sprzedanej ilości.
- `dfSalesCounter.badge.ordersSingular` i `dfSalesCounter.badge.ordersPlural`, używane w trybie liczby zamówień.

Każda wartość przyjmuje znacznik `%count%`. Tłumaczenia angielskie, francuskie, hiszpańskie, niemieckie i włoskie są dostarczane z wtyczką. Wartość zmieniona w menedżerze fragmentów ma pierwszeństwo przed wartością wtyczki, także po aktualizacji.

## Jak obliczana jest liczba

Wtyczka czyta pozycje zamówień typu produkt, złączone z zamówieniem i jego statusem. Obliczenie wykonuje się jednym zapytaniem agregującym, bez procesu w tle i bez dedykowanej tabeli.

- W trybie ilościowym zapytanie sumuje kolumnę ilości pozycji zamówień.
- W trybie zamówień liczy odrębne identyfikatory zamówień.
- Uwzględniana jest wyłącznie wersja aktywna zamówień, wersje robocze tworzone przy korekcie lub edycji zamówienia są pomijane.
- Przy włączonym sumowaniu wariantów wtyczka najpierw rozwiązuje rodzinę wyświetlanego produktu, produkt nadrzędny i warianty, a następnie filtruje po całym zbiorze identyfikatorów.

Jeśli wynik jest niższy od skonfigurowanego progu, do produktu nie jest dodawane żadne rozszerzenie i szablon nic nie renderuje. Plakietka nie istnieje więc w HTML, co wyklucza jakiekolwiek szczątkowe wyświetlenie przez regułę CSS motywu.

## Pamięć podręczna i aktualność liczby

Wynik jest zapisywany w puli pamięci podręcznej aplikacji Symfony, pod kluczem łączącym identyfikator produktu, kanał sprzedaży i sygnaturę opcji wpływających na obliczenie. Zmiana trybu zliczania, zakresu zamówień, okresu lub opcji sumowania zmienia tę sygnaturę i tym samym automatycznie unieważnia poprzednie wartości.

Przy każdym złożonym zamówieniu wtyczka czyści pamięć podręczną produktów zawartych w tym zamówieniu oraz ich produktu nadrzędnego. Licznik odzwierciedla więc sprzedaż bez czekania na wygaśnięcie skonfigurowanego czasu życia.

Przy skromnym katalogu czas życia pamięci podręcznej można ustawić na 0 bez odczuwalnych konsekwencji: zapytanie działa na indeksowanych kolumnach. Przy dużym katalogu z wysokim ruchem zachowaj czas życia rzędu kilku minut.

## Zaawansowana personalizacja renderowania

Wtyczka nadpisuje blok zakupu strony produktu i dodaje plakietkę w trzech standardowych blokach Twig, zależnie od wybranego położenia: bloku nazwy produktu, bloku kontenera ceny i bloku kontenera zakupu. Sama plakietka jest renderowana przez dedykowany szablon komponentu, `storefront/component/df-sales-counter/badge.html.twig`, który udostępnia dwa nadpisywalne bloki, jeden na ikonę i jeden na tekst.

Z poziomu motywu lub wtyczki rozszerzenie jest dostępne w Twig na produkcie strony pod nazwą `dfSalesCounter`. Udostępnia liczbę surową, liczbę sformatowaną, położenie, styl, ikonę, kolor akcentu, tekst niestandardowy i tryb zliczania. Możesz więc wyrenderować licznik poza blokiem zakupu, na przykład w zakładce informacji o produkcie, pobierając rozszerzenie i dołączając komponent.

Style są zdefiniowane w `Resources/app/storefront/src/scss/base.scss` wokół klas `df-sales-counter`, `df-sales-counter__icon` i `df-sales-counter__text`, z jednym modyfikatorem na styl wizualny. Każda reguła twojego motywu skompilowana po regule wtyczki ma pierwszeństwo, bez konieczności modyfikowania wtyczki.

## Rozwiązywanie problemów

### Plakietka się nie pojawia

Sprawdź po kolei: wtyczka jest aktywna, przełącznik włączenia jest ustawiony na tak dla właściwego kanału sprzedaży, produkt osiągnął skonfigurowany próg, a wybrany zakres zamówień nie wyklucza wszystkich twoich zamówień. Próg 5 z zakresem _Tylko zamówienia opłacone_ w sklepie testowym, którego zamówienia nigdy nie są oznaczane jako opłacone, nigdy nie da żadnego wyświetlenia.

### Plakietka pojawia się bez stylów

Motyw nie został przekompilowany po aktywacji. Wykonaj `bin/console theme:compile` albo użyj przycisku przekompilowania w panelu administracyjnym.

### Liczba wydaje się zamrożona

Czas życia pamięci podręcznej jeszcze nie minął. Wyczyść pamięć podręczną aplikacji poleceniem `bin/console cache:pool:clear cache.app` albo tymczasowo ustaw czas życia na 0, aby zweryfikować obliczenie.

### Plakietka nie trafia we właściwe miejsce

Mocno spersonalizowany motyw mógł usunąć lub zmienić nazwy bloków Twig bloku zakupu. Wypróbuj inne położenie w konfiguracji albo dołącz komponent ręcznie w swoim szablonie, pobierając rozszerzenie produktu.

## Aktualizacja i odinstalowanie

Aktualizację przeprowadza się przez wgranie nowego ZIP i kliknięcie _Aktualizuj_, a następnie przekompilowanie motywu, jeśli wersja zawiera zmiany stylów. Konfiguracja zostaje zachowana.

Przy odinstalowaniu pole wyboru proponuje zachowanie danych użytkownika. Odznaczone, usuwa wszystkie klucze konfiguracji wtyczki. Wtyczka nie tworzy żadnych tabel i nie wykonuje migracji, więc odinstalowanie nie pozostawia w bazie niczego poza jej konfiguracją.

## Wykaz kluczy konfiguracji

Wszystkie klucze mają przedrostek `DfSalesCounter.config.` i można nimi zarządzać przez Admin API lub polecenie `system:config:set`:

- `active`, wartość logiczna
- `countMode`, wartości `quantity` lub `orders`
- `orderScope`, wartości `all`, `notCancelled` lub `paid`
- `minThreshold`, liczba całkowita
- `periodDays`, liczba całkowita
- `aggregateVariants`, wartość logiczna
- `scopeToSalesChannel`, wartość logiczna
- `position`, wartości `afterName`, `afterPrice` lub `afterBuy`
- `style`, wartości `badge`, `inline` lub `banner`
- `icon`, wartości `none`, `flame`, `cart` lub `check`
- `accentColor`, ciąg szesnastkowy
- `thousandSeparator`, wartości `space`, `comma`, `dot` lub `none`
- `customText`, ciąg znaków
- `cacheTtl`, liczba całkowita w sekundach
