Przejdź do głównej zawartości

Layouty multi-sales-channel

To przepis, po który większość użytkowników przychodzi do tego plugina. Masz dwa kanały sprzedaży — nazwijmy je Sales Channel A i Sales Channel B — wskazujące na to samo drzewo kategorii, i chcesz, by każdy kanał miał własną stronę główną, listingi i layouty produktów.

Ta strona to instrukcja end-to-end. Jeśli chcesz tylko 5-minutowego podsmaku, zobacz Pierwsze zastąpienie layoutu.

Każda kategoria, produkt i strona docelowa zachowuje jeden bazowy layout przypisany w normalny sposób Shopware. Plugin zastępuje tę bazę alternatywą, gdy reguła per-kanał-sprzedaży pasuje. Nigdy nie duplikujesz drzewa kategorii, a kategoria nigdy nie ma dwóch layoutów.

Potraktuj Sales Channel A jako kanał “domyślny”. Przypisz każdy layout A bezpośrednio do pasującej kategorii, produktu lub strony docelowej, jak normalnie zrobiłbyś to w Shopware:

  • Kategoria strony głównej → [A] Homepage
  • Kategorie listingów → [A] Listing
  • Domyślna strona produktu (Settings → Shopping Experiences → Default layouts → Product page) → [A] Product

To są bazy. Plugin pozostawi je w spokoju na Sales Channel A (żadna reguła nie pasuje) i zastąpi je na Sales Channel B.

W Content → Shopping Experiences stwórz alternatywne layouty dla Sales Channel B:

  • [B] Homepage — typ Landing page (lub Shop page, w zależności od typu twojej strony głównej).
  • [B] Listing — typ Listing page.
  • [B] Product — typ Product page.

Zapisz je. Nie są jeszcze do niczego przypięte.

Przejdź do Settings → Rules → Create new rule. Zalecany punkt startu to jedna reguła scope’ująca czysto po kanale sprzedaży:

  • Name: Sales Channel B
  • Conditions: pojedynczy warunek — Sales Channel = is one of = wybierz Sales Channel B.
  • Save.

To wszystko. Nie dodawaj tutaj Is homepage — zobacz pułapkę poniżej.

Ponieważ każdy layout AND-uje swoje reguły razem (zobacz Modal przypisania layoutu), przypięcie tej samej reguły “Sales Channel B” do wszystkich trzech layoutów B wystarczy — sam typ layoutu decyduje, jaki rodzaj strony zastępuje, więc nie potrzebujesz osobnego warunku “is homepage” / “is listing” w regule.

Dla każdego layoutu [B] z kroku 2:

  1. Otwórz layout w Shopping Experiences.
  2. Layout assignment w prawym sidebar.
  3. Assign layout → zakładka Rules.
  4. Wybierz Sales Channel B.
  5. ConfirmSave layout.

Po tym kroku każdy layout B jest kandydatem na zastępstwo ale tylko gdy odwiedzający jest na Sales Channel B.

Przejdź do Settings → Extensions → Advanced Layouts Assigner.

Użyj przełącznika kanału sprzedaży na górze, by ustawić to per kanał (lub zostaw All sales channels dla wspólnych wartości domyślnych). Konserwatywna, zalecana konfiguracja:

  • Product pageAll
  • Category pageAll
  • Landing pageAll

Wartości domyślne seedowane przy instalacji parują każdy rodzaj z jego własnym typem. Jeśli layout [B] Homepage jest typu landingpage, ale zastępuje bazę product_list (listing), musisz dodać landingpage do wiersza Listing page:

  • Product pageProduct page (domyślnie)
  • Shop pageShop page (domyślnie)
  • Landing pageLanding page (domyślnie)
  • Listing pageListing page + Landing page (dodaj)

Zapisz.

  1. Wejdź na Sales Channel A w oknie incognito. Każda kategoria, produkt i strona docelowa renderuje bazowe layouty A.
  2. Wejdź na Sales Channel B. Każda kategoria, produkt i strona docelowa renderuje alternatywę B.

Pojedynczy najczęstszy błąd konfiguracji. Jeśli twoja reguła wygląda tak:

AND container

  • Is homepage = Yes
  • Sales Channel = Sales Channel B

…reguła pasuje tylko gdy oba są prawdziwe — tzn. tylko na stronie głównej Sales Channel B. Na listingu lub dowolnej innej stronie kategorii na B, Is homepage = No, więc reguła nie pasuje i bazowy layout A pozostaje.

Masz dwie drogi wyjścia:

  • Reguła “B Homepage”: kontener AND z Is homepage = Yes i Sales Channel is one of Sales Channel B. Przypnij tę regułę do [B] Homepage.
  • Reguła “B Listings”: tylko Sales Channel is one of Sales Channel B (bez Is homepage). Opcjonalnie dodaj Is homepage = No jeśli chcesz jawnie wykluczyć stronę główną. Przypnij tę regułę do [B] Listing i innych layoutów innych niż homepage.

Prostsze, zalecane podejście dla większości konfiguracji. Użyj jednej reguły z tylko Sales Channel = Sales Channel B. Ponieważ każdy layout ma już typ strony CMS (landingpage, product_list itd.), typy zastępowania plugina obsługują dla ciebie pytanie “który rodzaj strony pasuje do tego layoutu”. Przypnij tę pojedynczą regułę do każdego layoutu [B]. To właśnie zaleca krok 3 powyżej.

  • Date range — by wprowadzić tymczasowy wygląd. Przypnij regułę z samym zakresem dat tylko do layoutów, które chcesz ograniczyć czasowo.
  • Language / Currency — by wariować po kraju wewnątrz jednego kanału sprzedaży (np. ten sam sklep sprzedaje w EUR i CHF na dwóch domenach).
  • Customer group — dla layoutu B2B. Zobacz Layouty specyficzne dla B2B.

W każdym przypadku mechanika jest ta sama: reguła zawęża, kiedy alternatywny layout się kwalifikuje; plugin zastępuje bazę gdy reguła pasuje.

  • Każda kategoria, produkt i strona docelowa ma przypisany bazowy layout w normalny sposób Shopware.
  • Alternatywne layouty istnieją w Shopping Experiences z odpowiednim typem.
  • Jedna reguła per “oś” (per kanał sprzedaży, per język itd.) — najlepiej bez Is homepage.
  • Reguła jest przypięta do każdego alternatywnego layoutu w Layout assignment → zakładka Rules.
  • Replacement mode to All dla rodzajów stron, które chcesz podmieniać (per kanał sprzedaży).
  • Replacement types wymienia typ alternatywy w wierszu bazy (per kanał sprzedaży).