Przejdź do głównej zawartości

Reguły i warunki

Plugin ponownie wykorzystuje Rule Builder Shopware do dopasowania. Nie ma osobnego UI — każda reguła istniejąca w Settings → Rules jest kandydatem. Przypinasz reguły do layoutu w Shopping Experiences → otwórz layout → Layout assignment → zakładka Rules, a w czasie requesta plugin ewaluuje je względem bieżącej strony.

Ewaluowane są tylko wspierane warunki. Plugin ma kuratorowaną listę — Shopware zawiera też wiele warunków zaprojektowanych dla kontekstu koszyka / zamówienia (suma koszyka, pozycje w koszyku, koszt dostawy), które nie mają sensu przy wyborze layoutu dla strony, która jeszcze nie została zbudowana. Te są po cichu ignorowane. Modal przypisania layoutu pokazuje badge statusu per reguła:

  • All conditions defined in this rule are supported ✓ — reguła ewaluuje dokładnie tak, jak ją napisałeś.
  • Not all conditions defined in this rule are supported ⚠ — wspierane warunki są ewaluowane, niewspierane pomijane.
  • This rule does not contain any supported conditions and will be ignored ✗ — reguła nie może pasować. Plugin nie wybierze tego layoutu.
  • Sales Channel — najczęściej używany warunek w tym pluginie. Wybiera aktywny kanał sprzedaży.
  • Date range — ogranicza layout do okna [od, do]. Świetne dla sezonowych stron głównych.
  • Day of week — layout poniedziałkowej promocji, weekendowa strona główna itd.
  • Time range — layouty “happy hour”.
  • Language — wybór po języku storefront.
  • Currency — wybór po walucie storefront (często proxy dla kraju).
  • Always valid — placeholder, przydatny przy prototypowaniu.
  • Is homepage [P2Lab Layouts Assigner] — prawda tylko gdy request rozwiązuje się do navigation root kanału. Zobacz Własne warunki reguł.
  • Item in category [P2Lab Layouts Assigner] — prawda gdy oglądany produkt lub kategoria jest jedną z wymienionych kategorii (lub się w nich znajduje).
  • Item in category with children [P2Lab Layouts Assigner] — to samo, ale matchuje też kategorie potomne.

Plugin wspiera większość warunków związanych z klientem: grupa klientów, stan zalogowania, pola adresowe, tagi, wiek, custom fields, liczba zamówień, dni od ostatniego zamówienia, i więcej. Zobacz Własne warunki reguł dla pełnej listy.

Te warunki sensownie matchują tylko gdy klient jest zalogowany. Dla anonimowego odwiedzającego sprawdzana wartość jest zwykle null, a warunek zwraca false (lub true, w zależności od operatora).

Standardowe kontenery Shopware: AND container, OR container, All line items container. AND-kontenery wymagają by wszystkie warunki dzieci pasowały. OR-kontenery wymagają by przynajmniej jeden pasował. All line items container jest specjalny — zobacz Własne warunki reguł dla zastrzeżenia.

Gdy przypinasz wiele reguł do layoutu, są one AND-owane: layout jest kandydatem tylko gdy wszystkie jego reguły pasują. Wewnątrz pojedynczej reguły obowiązuje standardowa logika kontenerów (AND-kontenery AND-owane, OR-kontenery OR-owane).

Typowe wzorce:

  • Jedna reguła per layout — dla czytelności trzymaj jedną regułę per layout. Dodawaj wiele warunków do tej reguły przez kontenery AND/OR.
  • Wiele reguł per layout — przydatne gdy chcesz AND-ować dwie istniejące reguły używane gdzie indziej (np. “Sales Channel B” AND “B2B customer group”). Nie trzeba klonować warunków.

Gdy więcej niż jeden layout może pasować dla jednego requesta, plugin wybiera pierwsze trafienie przy przechodzeniu layoutów uporządkowanych po rule.priority (najniższy pierwszy). Ustaw priorytet swoich reguł w Settings → Rules → Edit rule → Priority jeśli potrzebujesz rozstrzygnięcia remisu.

Matcher przechodzi layouty w stronach po 100 i zatrzymuje się na pierwszym trafieniu — zobacz Wydajność dla twardego limitu liczby kandydatów ewaluowanych na request.

  • Łączenie Is homepage z Sales Channel w kontenerze AND. To pasuje tylko na stronie głównej kanału — listingi i inne strony kategorii nie pasują. Podziel na dwie reguły lub usuń Is homepage. Zobacz pułapkę w przepisie multi-sales-channel.
  • Zapomnienie przypisać bazowy layout do kategorii. Plugin zastępuje bazę — nie tworzy jej. Zobacz Jak to działa.
  • Puste Replacement types dla odpowiedniego rodzaju strony. Plugin w ogóle nie szuka alternatyw. Zobacz Typy zastępowania.
  • Reguła z samym Always valid — tak, pasuje wszędzie. Zastąpi każdą stronę odpowiedniego typu. Użyj scope’owania sales channel, by ją ograniczyć.