Skip to content

Multi-sales-channel layouts

This is the recipe most users come to the plugin for. You have two sales channels — call them Sales Channel A and Sales Channel B — pointing at the same category tree, and you want each channel to have its own homepage, listing and product layouts.

This page is the end-to-end walkthrough. If you only want a 5-minute taste, see First layout replacement.

Each category, product and landing page keeps one base layout assigned the normal Shopware way. The plugin replaces that base with an alternative when a per-sales-channel rule matches. You never duplicate the category tree, and a category never has two layouts.

Step 1: assign the Sales Channel A layouts as the base

Section titled “Step 1: assign the Sales Channel A layouts as the base”

Treat Sales Channel A as the “default” channel. Assign every A layout directly to the matching category, product or landing page as you normally would in Shopware:

  • Homepage category → [A] Homepage
  • Listing categories → [A] Listing
  • Default product page (Settings → Shopping Experiences → Default layouts → Product page) → [A] Product

These are the bases. The plugin will leave them alone on Sales Channel A (no rule matches) and replace them on Sales Channel B.

Under Content → Shopping Experiences, create the alternative layouts for Sales Channel B:

  • [B] Homepage — type Landing page (or Shop page, depending on your homepage type).
  • [B] Listing — type Listing page.
  • [B] Product — type Product page.

Save them. They are not yet attached to anything.

Go to Settings → Rules → Create new rule. The recommended starting point is one rule that scopes purely on the sales channel:

  • Name: Sales Channel B
  • Conditions: a single condition — Sales Channel = is one of = pick Sales Channel B.
  • Save.

That’s it. Don’t add Is homepage here — see the pitfall below.

Because every layout AND-s its rules together (see Layout assignment modal), attaching the same “Sales Channel B” rule to all three B layouts is enough — the layout type itself decides which page kind it replaces, so you don’t need a separate “is homepage” / “is listing” condition in the rule.

Step 4: attach the rule to every [B] layout

Section titled “Step 4: attach the rule to every [B] layout”

For each [B] layout from step 2:

  1. Open the layout in Shopping Experiences.
  2. Layout assignment in the right sidebar.
  3. Assign layoutRules tab.
  4. Pick Sales Channel B.
  5. ConfirmSave the layout.

After this step, every B layout is a candidate replacement but only when the visitor is on Sales Channel B.

Go to Settings → Extensions → Advanced Layouts Assigner.

Use the sales channel switcher at the top to set this per channel (or leave All sales channels for shared defaults). The conservative, recommended config:

  • Product pageAll
  • Category pageAll
  • Landing pageAll

The defaults seeded at install pair each kind with its own type. If the [B] Homepage layout is landingpage-type but it replaces a product_list (listing) base, you need to add landingpage to the Listing page row:

  • Product pageProduct page (default)
  • Shop pageShop page (default)
  • Landing pageLanding page (default)
  • Listing pageListing page + Landing page (add it)

Save.

  1. Browse to Sales Channel A in an incognito window. Every category, product and landing page renders the A base layouts.
  2. Browse to Sales Channel B. Every category, product and landing page renders the B alternative.

Pitfall: combining Is homepage with Sales Channel

Section titled “Pitfall: combining Is homepage with Sales Channel”

The single most common configuration mistake. If your rule looks like this:

AND container

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

…the rule only matches when both are true — i.e. only on the homepage of Sales Channel B. On a listing or any other category page on B, Is homepage = No, so the rule does not match and the base A layout stays.

You have two ways out:

  • Rule “B Homepage”: AND container with Is homepage = Yes and Sales Channel is one of Sales Channel B. Attach this rule to [B] Homepage.
  • Rule “B Listings”: just Sales Channel is one of Sales Channel B (without Is homepage). Optionally add Is homepage = No if you want to explicitly exclude the homepage. Attach this rule to [B] Listing and other non-homepage layouts.

The simpler, recommended approach for most setups. Use one rule with only Sales Channel = Sales Channel B. Because every layout already has a CMS page type (landingpage, product_list, etc.), the plugin’s replacement types handle the “which page kind does this layout fit” question for you. Attach this single rule to every [B] layout. This is what step 3 above recommends.

  • Date range — to roll out a temporary look. Attach the rule with the date range only to layouts you want time-limited.
  • Language / Currency — to vary by country within a single sales channel (e.g. the same store sells in EUR and CHF on two domains).
  • Customer group — for a B2B layout. See B2B-specific layouts.

In every case, the underlying mechanic is the same: the rule narrows when the alternative layout is eligible; the plugin replaces the base when the rule matches.

  • Every category, product and landing page has a base layout assigned the normal Shopware way.
  • The alternative layouts exist under Shopping Experiences with the right type.
  • One rule per “axis” (per sales channel, per language, etc.) — preferably without Is homepage.
  • The rule is attached to every alternative layout under Layout assignment → Rules tab.
  • Replacement mode is All for the page kinds you want to swap (per sales channel).
  • Replacement types lists the alternative’s type for the base’s row (per sales channel).