Wszystko, co warto wiedzieć, zanim zainstalujesz.
Szczegółowe spojrzenie na to, jak działa Dynamic Product Groups Podkategorie Shopware 6 — DfStreamCategoryTree: rekurencyjny filtr kategorii obejmujący kategorie podrzędne, dlaczego zbudowaliśmy go w ten sposób i jaka myśl stoi za powyższymi funkcjami.
Dlaczego natywny filtr kategorii nie schodzi w dół drzewa
Kreator warunków grup dynamicznych udostępnia pole Categories, które odpytuje asocjację product.categoriesRo. Ta asocjacja wymienia wyłącznie kategorie, do których produkt jest jawnie przypisany w swojej zakładce Categories. Poprawnie zorganizowany katalog umieszcza produkty w kategoriach liściach: model sneakersów leży w Mężczyźni, Obuwie, Sneakersy, a nie w Mężczyźni. Konsekwencja jest mechaniczna: filtr na Mężczyźni zwraca tylko nieliczne produkty przypisane bezpośrednio na tym poziomie. To nie błąd, lecz udokumentowane zachowanie asocjacji, ale zaskakuje regularnie przy tworzeniu strumienia merchandisingowego na całą rodzinę produktów.
Co robi product.categoryTree
Shopware utrzymuje już dla każdego produktu pole JSON o nazwie categoryTree, zawierające identyfikator wszystkich kategorii ścieżki, od korzenia po kategorię przypisania. CategoryIndexer przelicza je przy każdym przeniesieniu kategorii i każdej zmianie przypisania produktu. Storefront wykorzystuje je wewnętrznie do listingów kategorii. Filtr equalsAny na tym polu z identyfikatorem kategorii nadrzędnej zwraca więc wszystkie produkty, których ścieżka przez nią przebiega, niezależnie od głębokości. Pole istnieje i działa w DAL, ale administracja nie oferuje go w selektorze kreatora warunków: nie figuruje na liście dozwolonych pól usługi productStreamConditionService.
Dokładna rola wtyczki
DfStreamCategoryTree dodaje jedną linię do tej listy i dostarcza odpowiadające przetłumaczone etykiety. Tyle, i jest to zamierzone. Nie wprowadza żadnego dekoratora usługi, żadnego nasłuchiwacza zdarzeń produktu, żadnej tabeli, żadnej migracji. Filtr zbudowany w interfejsie jest całkowicie standardowym filtrem DAL, ocenianym przez ten sam silnik co pozostałe warunki strumienia. Oznacza to również, że strumień skonfigurowany z tą wtyczką pozostaje czytelny i użyteczny nawet po jej późniejszej dezaktywacji: filtr działa dalej na poziomie DAL, znika jedynie wyświetlanie pola w interfejsie.
Typowe zastosowania
Strona kategorii nawigacyjnej zasilana grupą dynamiczną obejmującą całą rodzinę produktów, bez ręcznego wymieniania podkategorii. Reguła promocji stosująca rabat na cały dział wraz z poddziałami. Automatyczny blok cross-sellingu zbudowany na dziale, do którego należy oglądany produkt. Feed eksportowy lub blok Shopping Experience zasilany strumieniem, który ma odzwierciedlać całą gałąź katalogu. We wszystkich tych przypadkach wersja natywna zmusza do ponownego otwierania konfiguracji przy każdej nowej podkategorii. Wersja categoryTree nie wymaga żadnej pracy utrzymaniowej.
Instalacja i przebudowa administracji
Wtyczkę instaluje się przez wgranie ZIP w Extensions, My extensions, albo przez umieszczenie katalogu w custom ukośnik plugins i wykonanie plugin:refresh oraz plugin:install --activate. Ponieważ zmienia zachowanie administracji, po instalacji konieczna jest jednorazowa przebudowa bundla admin poleceniem build-administration lub bin ukośnik console bundle:dump, a następnie kompilacja. W środowisku produkcyjnym zarządzanym przez pipeline wdrożeniowy ta przebudowa zwykle jest już częścią standardowych kroków. Po przebudowaniu administracji pole pojawia się natychmiast w selektorze warunków, bez żadnej konfiguracji wtyczki do uzupełnienia.
Czego wtyczka nie robi
Nie zastępuje natywnego filtra Categories, działa obok niego. Nie zmienia algorytmu indeksowania kategorii ani obliczania categoryTree, korzysta z tego, co Shopware już wytwarza. Nie dotyczy filtrów listingu w storefront ani nawigacji fasetowej, które opierają się na innym mechanizmie. Nie działa na Shopware Cloud, ponieważ wersja SaaS hostowana przez Shopware nie pozwala instalować wtyczek serwerowych. Nie rości sobie też pretensji do przyspieszania oceny strumieni: pole jest natywne i zindeksowane, więc koszt oceny odpowiada standardowemu filtrowi, ani więcej, ani mniej.
Na razie nie ma opinii o produkcie.