Przejdź do głównej zawartości

Własne warunki reguł

Plugin dodaje trzy własne warunki reguł i akceptuje kuratorowany podzbiór standardowych warunków Shopware. Wszystko, czego nie ma na tej stronie, jest po cichu pomijane gdy reguła jest ewaluowana dla wyboru layoutu.

  • Type id: p2labCmsAssignRulesIsHomepageRule
  • Klasa: Rule\IsHomepageRule
  • Scope: tylko strony kategorii. Zwraca false dla scope’ów produktu i strony docelowej.

Prawda gdy odwiedzający jest na navigation root aktywnego kanału sprzedaży — tzn. categoryId === salesChannel.navigationCategoryId. Fałsz na każdej podkategorii, każdej stronie produktu, każdej stronie docelowej.

Pole:

  • Is homepage — przełącznik boolean.

Częsta pułapka: łączenie tego z Sales Channel w kontenerze AND. Kombinacja pasuje tylko na stronie głównej kanału. Zobacz pułapkę w przepisie multi-sales-channel.

  • Type id: p2labCmsAssignRulesInCategoryRule
  • Klasa: Rule\InCategoryRule
  • Scope: strony produktu i kategorii.

Prawda gdy produkt (lub oglądana kategoria) jest bezpośrednio przypisany do jednej z wymienionych kategorii.

Pola:

  • Operatoris one of / is none of / is empty.
  • Categories — multi-select.

Dla produktu sprawdzenie biegnie względem product.categoryIds. Dla strony kategorii sprawdzenie biegnie względem [categoryId]. Warunek nie patrzy na drzewo kategorii — potomkowie wymienionej kategorii nie pasują. Użyj następnego warunku dla matchowania świadomego drzewa.

Item in category with children [P2Lab Layouts Assigner]

Dział zatytułowany „Item in category with children [P2Lab Layouts Assigner]”
  • Type id: p2labCmsAssignRulesInCategoryWithChildrenRule
  • Klasa: Rule\InCategoryWithChildrenRule (rozszerza poprzednią)
  • Scope: strony produktu i kategorii.

Prawda gdy produkt (lub oglądana kategoria) jest w którejkolwiek z wymienionych kategorii, LUB w jednym z ich potomków. Sprawdzenie potomków robione jest przez lookup Shopware’owego path kategorii (który przechowuje łańcuch przodków jako |id1|id2|id3|).

Pola: te same co Item in category.

Koszt: jeden dodatkowy DB lookup per ewaluacja per sprawdzana kategoria. Preferuj Item in category gdy matchowanie potomków nie jest potrzebne.

Lista ConditionNameEnum::CONDITIONS plugina jawnie zezwala na następujące standardowe warunki Shopware:

  • Sales ChannelsalesChannel
  • Date rangedateRange
  • Day of weekdayOfWeek
  • Languagelanguage
  • Time rangetimeRange
  • Currencycurrency
  • Always validalwaysValid
  • Affiliate code, billing city / country / zip / state / street, campaign code, is company, age, created by admin, birthday, email, customer group, is active, is newsletter recipient, logged in, customer number, salutation, last name, custom field, default payment method, different addresses, tag, is guest, is new customer, number of reviews, order count, shipping city / country / zip / state / street, days since first login, days since last login, days since last order, order total amount.

(Zobacz Enum\ConditionNameEnum::CONDITIONS dla kanonicznej listy.)

  • AND containerandContainer
  • OR containerorContainer
  • All line items containerallLineItemsContainer (zastępowany własnym MatchAllRule plugina — zobacz Wewnętrzności przepływu zastępowania)

Wszystko nie w CONDITIONS lub CONTAINERS jest po cichu pomijane. To obejmuje większość warunków cart / line-item / shipping / payment:

  • Cart total, cart shipping cost, items in cart, line item promoted, line item with delivery date, line item required, line item taxonomy, line item promotion itp.
  • Shipping method, payment method, shipping country (wariant cart-scoped) itp.

Te są celowo wykluczone — celują w flow checkout, gdzie jest faktyczny koszyk do zainspektowania, nie w flow page-load gdzie plugin działa.

Modal przypisania layoutu pokazuje badge statusu per reguła wskazujący, czy wszystkie, niektóre czy żadne z jej warunków są wspierane. Zobacz Modal przypisania layoutu.

Plugin nie wystawia publicznego extension point dla nowych warunków — dodałbyś je tak samo jak Shopware (rejestrując klasę Rule plus jej komponent admina) a następnie dodał type id do ConditionNameEnum::CONDITIONS, by włączyć je do matchera.