Licznik Koszyków dla Shopware 6: instalacja i konfiguracja
Instalacja, zasilenie indeksu i konfiguracja odznaki „W ponad 20 koszykach” w Shopware 6.5, 6.6 i 6.7.
Wtyczka DfCartPopularity wyświetla na karcie produktu odznakę z liczbą koszyków, które aktualnie zawierają dany produkt, na przykład „W ponad 20 koszykach”. Zliczanie opiera się na prawdziwych danych koszyków.
Wymagania
- Shopware 6.5, 6.6 lub 6.7 w instalacji self hosted (SaaS Shopware Cloud nie przyjmuje wtyczek serwerowych)
- PHP 8.1 lub nowszy
- Dostęp SSH do poleceń konsoli i kompilacji motywu
Instalacja
Wgraj ZIP przez Rozszerzenia, a następnie Moje rozszerzenia, albo skopiuj katalog do custom/plugins/ i uruchom:
bin/console plugin:refresh
bin/console plugin:install --activate DfCartPopularity
bin/console cache:clear
./bin/build-storefront.sh
Kompilacja storefrontu jest wymagana jednorazowo, aby dołączyć arkusz stylów odznaki. W środowisku sterowanym pipeline’em wdrożeniowym ten krok zwykle jest już częścią standardowego procesu.
Zasilenie indeksu
Po instalacji indeks jest pusty: liczniki startują od zera i napełniają się w miarę modyfikowania koszyków przez klientów. Aby pokazać wiarygodne liczby od pierwszego dnia, uruchom odbudowę:
bin/console df:cart-popularity:rebuild
Polecenie odczytuje koszyki już zapisane w sklepie i zasila indeks. Jest idempotentne i można je bezpiecznie powtarzać. Opcja --truncate czyści indeks przed odbudową.
Koszyki zamienione już w zamówienie są usuwane przez Shopware z tabeli koszyków. Odbudowa widzi więc wyłącznie koszyki aktywne, czyli dokładnie oczekiwany zakres.
Konfiguracja
Ustawienia, System, Wtyczki, DataFirefly Cart Popularity, a następnie Konfiguruj. Każdą opcję można nadpisać osobno dla każdego kanału sprzedaży.
Wyświetlanie
- Włącz odznakę: śledzenie koszyków działa również przy wyłączonej odznace, dzięki czemu dane są gotowe w dniu jej włączenia.
- Minimalny próg (domyślnie 5): poniżej tej liczby koszyków nic się nie wyświetla.
- Tryb wyświetlania: zaokrąglony próg lub dokładna liczba.
- Krok progu (domyślnie 10): wynik 23 wyświetla się jako „ponad 20”. Gdy wynik jest niższy niż krok, wtyczka automatycznie przechodzi na dokładną liczbę zamiast podawać fałszywy próg.
- Położenie: nad lub pod blokiem zakupu.
- Styl odznaki: delikatne tło, obramowanie lub sam tekst.
Zasady zliczania
- Okno czasowe (domyślnie 7 dni): liczone są tylko koszyki zaktualizowane w tym oknie. Wartość 0 wyłącza okno.
- Tylko aktywne koszyki: wyklucza koszyki zamienione już w zamówienie.
- Ogranicz do kanału sprzedaży: zapobiega zawyżaniu licznika jednego sklepu przez szczyt w innym.
- Agreguj warianty: wszystkie warianty produktu współdzielą licznik produktu nadrzędnego. Wyłącz opcję, jeśli każdy wariant ma mieć własny licznik.
Wydajność i przechowywanie danych
- Czas życia cache (domyślnie 900 sekund): zapytanie zliczające wykonuje się raz na czas życia i na produkt. Wartość 0 wyłącza cache. Cache jest czyszczony automatycznie przy zapisie konfiguracji.
- Okres przechowywania (domyślnie 60 dni): starsze rekordy są usuwane. Czyszczenie działa automatycznie, najwyżej raz na godzinę, niezależnie od kolejki komunikatów.
Personalizacja tekstu
Treść odznaki znajduje się w snippetach Shopware. Ustawienia, Snippety, następnie wyszukaj dfCartPopularity. Dostępne są trzy klucze:
dfCartPopularity.badge.textTier: tryb progowy, zawiera miejsce na liczbędfCartPopularity.badge.textExact: tryb dokładny, zawiera miejsce na liczbędfCartPopularity.badge.textSingular: tryb dokładny przy jednym koszyku
Miejsce na liczbę zapisuje się jako %count% i należy je zachować we własnym sformułowaniu. Dołączone są tłumaczenia angielskie, niemieckie, francuskie, hiszpańskie, włoskie i polskie.
Jak działa zliczanie
Shopware serializuje cały koszyk do kolumny payload w tabeli cart, często skompresowanej. Żadne zapytanie SQL nie może więc ustalić zawartości koszyka bez jego deserializacji. Wtyczka utrzymuje własną tabelę df_cart_popularity, łączącą token koszyka, produkt, kanał sprzedaży, ilość i znacznik zamówienia.
Tabela jest synchronizowana przy każdym zapisie koszyka przez CartSavedEvent, dwoma zindeksowanymi zapytaniami. Zdarzenie CartConvertedEvent oznacza wiersze jako zamówione w momencie złożenia zamówienia. Wyświetlanie wykonuje następnie zwykłe zliczanie unikalnych wartości na indeksie złożonym, trzymane w cache.
Nie są zapisywane żadne dane osobowe: indeks zawiera wyłącznie token koszyka, będący pseudonimowym identyfikatorem technicznym, referencję produktu, kanał sprzedaży i znaczniki czasu.
Polecenia CLI
bin/console df:cart-popularity:rebuild
bin/console df:cart-popularity:rebuild --truncate
bin/console df:cart-popularity:cleanup
bin/console df:cart-popularity:cleanup --days=30
Rozwiązywanie problemów
Odznaka się nie pojawia
Sprawdź po kolei: odznaka jest włączona dla danego kanału sprzedaży, liczba koszyków osiąga próg, okno czasowe nie wyklucza wszystkich koszyków, a storefront został ponownie skompilowany po instalacji. Wyczyść też cache HTTP, jeśli strona jest serwowana z cache.
Odznaka pojawia się bez stylów
Arkusz stylów wtyczki jest dołączany podczas kompilacji motywu. Uruchom ponownie ./bin/build-storefront.sh lub bin/console theme:compile.
Polecenie odbudowy zgłasza pominięte koszyki
Te koszyki używają formatu payloadu, którego polecenie nie potrafi odczytać, zwykle zewnętrznego magazynu koszyków. Zostaną zaindeksowane normalnie przy następnej zmianie po stronie klienta, ponieważ śledzenie zdarzeniami działa niezależnie od trybu przechowywania.
Odinstalowanie
Odinstalowanie z usunięciem danych użytkownika kasuje tabelę df_cart_popularity i konfigurację wtyczki. Przy zachowaniu danych użytkownika tabela pozostaje, a liczniki wracają w niezmienionej postaci po ponownej instalacji.