PrestaShop Multistore einrichten: Vollständige Anleitung
Alles über PrestaShop Multistore — Planung, Konfiguration, Katalogfreigabe, Modulverhalten, SEO-Aspekte und häufige Fallstricke.
Was ist PrestaShop Multistore?
PrestaShop Multistore ermöglicht es Ihnen, mehrere Online-Shops über eine einzige Installation und ein Back Office zu betreiben. Gemeinsame Codebasis, gemeinsame Datenbank, gemeinsames Modul-Ökosystem — aber getrennte Storefronts für Ihre Kunden. Die Funktion ist seit Version 1.5 in PrestaShop enthalten und wurde in 8.x und 9.x erheblich weiterentwickelt — erfordert aber nach wie vor eine sorgfältige Planung.
Wann Sie Multistore wirklich brauchen
Mehrere Marken über ein Back Office. Sie verkaufen Elektronik unter „TechDirect“ und Audio unter „SoundElite“. Beide teilen sich Ihr Lager und einige Produkte, haben aber jeweils eine eigene Website, ein eigenes Theme und eigene Preise. Ihr Team verwaltet alles über ein einziges Admin-Panel.
Verschiedene Länder mit separaten Katalogen. Ihr deutscher und Ihr französischer Shop teilen sich einige Produkte, unterscheiden sich aber in Sortiment, Preisgestaltung, Versandregeln und CMS-Inhalten. Multistore ermöglicht es jedem Shop, seinen eigenen Katalog zu pflegen und gleichzeitig die Überschneidungen zu teilen.
B2B und B2C aus einer Installation. Der Einzelhandels-Shop zeigt Preise inklusive Mehrwertsteuer mit Standardversand an. Der Großhandels-Shop zeigt Nettopreise, verlangt Mindestbestellmengen und bietet ausgehandelte Konditionen. Ein Produktkatalog, zwei völlig unterschiedliche Einkaufserlebnisse.
Outlet- oder Ausverkaufs-Shop. Eine separate Storefront für reduzierte Produkte mit eigenem Theme, die auf dieselbe Produktdatenbank zugreift.
Wann Multistore NICHT die Antwort ist
- Nicht zusammenhängende Geschäftsbereiche: Tierbedarf und Industriemaschinen haben nichts gemeinsam. Separate Installationen sind einfacher.
- Verschiedene PS-Versionen benötigt: Multistore erfordert, dass alle Shops dieselbe Version verwenden.
- Widersprüchliche Modulanforderungen: Wenn Shops inkompatible Module benötigen, vermeiden separate Installationen Konflikte.
- Risikoisolierung: Ein Datenbankproblem im Multistore betrifft alle Shops. Separate Installationen begrenzen den Schadensradius.
- Sie brauchen nur mehrere Sprachen: PrestaShop unterstützt Mehrsprachigkeit nativ innerhalb eines einzelnen Shops — kein Multistore nötig.
Bevor Sie Multistore aktivieren, listen Sie auf, was Sie zwischen den Shops teilen möchten und was getrennt bleiben muss. Wenn die „Gemeinsam“-Liste kurz und die „Getrennt“-Liste lang ist, sind Sie mit unabhängigen Installationen besser bedient.
Planung Ihrer Architektur
Shop-Gruppen
PrestaShop organisiert Multistore als Shop-Gruppe → Shop. Gruppen definieren Freigaberegeln, die später nur schwer geändert werden können:
- Kunden teilen: Kann sich ein Kunde, der sich bei Shop A registriert hat, auch bei Shop B anmelden?
- Verfügbare Mengen teilen: Reduziert ein Verkauf in Shop A den für Shop B sichtbaren Bestand?
Gemeinsame vs. getrennte Kataloge
Produkte können allen Shops oder nur bestimmten Shops zugeordnet werden. Selbst gemeinsame Produkte können pro Shop unterschiedliche Preise, Beschreibungen, Bilder und SEO-Metadaten haben. Kategorien funktionieren genauso — gemeinsam oder shopspezifisch, mit Namen und Beschreibungen pro Shop.
URL-Strategie
- Separate Domains (
marke-a.com,marke-b.com) — am besten für unterschiedliche Marken. Erfordert individuelle SSL-Zertifikate oder ein Multi-Domain-Zertifikat. - Subdomains (
de.meinshop.com,fr.meinshop.com) — natürlich für regionale Varianten. Kann ein Wildcard-SSL-Zertifikat verwenden. - Unterverzeichnisse (
meinshop.com/grosshandel/) — einfachste Einrichtung, ein SSL-Zertifikat, schränkt aber die SEO-Flexibilität ein.
Datenbankarchitektur
Multistore verwendet eine einzige Datenbank mit id_shop-Spalten zur Unterscheidung der Daten. Ein Backup deckt alle Shops ab, aber ein Fehler betrifft ebenfalls alle Shops, und Abfragen tragen den Overhead der Shop-Filterung.
Multistore aktivieren und konfigurieren
Schritt 1: Funktion aktivieren
Gehen Sie zu Erweiterte Einstellungen → Allgemein (PS 1.7.x) oder Erweiterte Einstellungen → Multistore (PS 8.x/9.x). Setzen Sie Multistore aktivieren auf Ja. Im Header des Back Office erscheint eine Shop-Kontext-Auswahl.
Schritt 2: Shop-Gruppe erstellen
Klicken Sie unter Erweiterte Einstellungen → Multistore auf Neue Shop-Gruppe hinzufügen. Legen Sie den Gruppennamen und die Freigabeoptionen (Kunden, Mengen) fest. Denken Sie daran: Diese lassen sich später nur schwer ändern.
Schritt 3: Neuen Shop hinzufügen
Klicken Sie auf Neuen Shop hinzufügen. Wählen Sie den Namen, die Gruppe, die Stammkategorie und importieren Sie optional Daten aus einem bestehenden Shop, um Einrichtungszeit zu sparen.
Schritt 4: URLs konfigurieren
Klicken Sie auf den Shop-Namen und fügen Sie eine URL hinzu. Beispiele:
# Separate Domain
Domain: www.mein-zweiter-shop.com
Physical URI: /
Virtual URI: (leer)
# Subdomain
Domain: shop2.meinshop.com
Physical URI: /
Virtual URI: (leer)
# Unterverzeichnis
Domain: www.meinshop.com
Physical URI: /
Virtual URI: grosshandel/
Schritt 5: Serverkonfiguration
Bei separaten Domains/Subdomains müssen alle Domains in Ihrer Webserver-Konfiguration auf dasselbe PrestaShop-Verzeichnis zeigen. Für virtuelle URLs (Unterverzeichnisse) ist in der Regel keine zusätzliche Serverkonfiguration erforderlich — PrestaShop übernimmt das Routing über die .htaccess.
Leeren Sie nach der URL-Konfiguration immer den PrestaShop-Cache. Das URL-Routing wird aggressiv gecacht, und veraltete Einträge verursachen Weiterleitungsschleifen.
Inhalte shopübergreifend verwalten
Die Shop-Kontext-Auswahl
Das Dropdown-Menü oben im Back Office steuert, für welchen Shop Ihre Änderungen gelten: Alle Shops, eine bestimmte Gruppe oder ein bestimmter Shop. Die goldene Regel: Arbeiten Sie immer im spezifischsten Kontext. Im „Alle Shops“-Kontext zu bearbeiten, wenn Sie nur einen Shop ändern wollten, ist der häufigste Multistore-Fehler.
Konfigurationsvererbung
Im „Alle Shops“-Kontext gesetzte Werte werden zu Standardwerten. Einzelne Shops können diese überschreiben. Auf der Konfigurationsseite steuern Checkboxen neben den Feldern, ob das Feld den vererbten Wert oder einen shopspezifischen Override verwendet. Deaktivieren Sie die Checkbox, um einen eigenen Wert für den aktuellen Shop festzulegen.
Das Verhalten der Vererbungs-Checkboxen hat sich zwischen PrestaShop-Versionen geändert. Testen Sie immer mit Ihrer spezifischen Version, um zu verstehen, welcher Zustand „vererbt“ und welcher „individuell“ bedeutet.
Produkte und Kategorien
Wichtige Verhaltensweisen:
- Ein Produkt im „Alle Shops“-Kontext anzulegen, macht es überall verfügbar.
- Ein Produkt in einem bestimmten Shop-Kontext anzulegen, beschränkt es auf diesen Shop. Sie können es später mit anderen Shops verknüpfen.
- Das Deaktivieren eines Produkts in einem Shop hat keine Auswirkungen auf andere Shops.
- Das Löschen im „Alle Shops“-Kontext entfernt es dauerhaft aus allen Shops.
- Das Bestandsverhalten hängt von den Freigabeeinstellungen der Gruppe ab.
Theme, Sprache und Währung pro Shop
Jeder Shop kann sein eigenes Theme, seine eigenen aktivierten Sprachen und seine eigenen Währungen haben. Wählen Sie zuerst den Shop-Kontext und konfigurieren Sie dann unter Design → Theme & Logo oder International → Lokalisierung.
Modulverhalten im Multistore
Wie Multistore-fähige Module funktionieren
Ein ordnungsgemäß entwickeltes Modul speichert die Konfiguration pro Shop (mittels Configuration::updateValue(), das den Shop-Kontext berücksichtigt), prüft Shop::getContextShopID() in Hooks und behandelt den „Alle Shops“-Kontext korrekt. Die Tabelle ps_configuration speichert shopspezifische Werte mit einer id_shop-Spalte.
Häufige Modul-Stolperfallen
- Nur globale Konfiguration: Das Modul speichert Einstellungen ohne
id_shop— eine Änderung in einem Shop betrifft alle. - Hardcodierte Shop-ID: Das Modul geht von
id_shop = 1aus und ignoriert sekundäre Shops. - Fehlender Shop-Filter in Abfragen: Gibt gemischte Daten aus allen Shops zurück.
- Cache-Kollisionen: Cache-Schlüssel ohne Shop-ID liefern Daten des falschen Shops aus.
Multistore-Unterstützung eines Moduls prüfen
- Erwähnt die Beschreibung „multistore compatible“?
- Gibt es Dokumentation zur shopspezifischen Konfiguration?
- Zeigt die Konfigurationsseite nach der Installation Vererbungs-Checkboxen an, wenn Sie sich in einem bestimmten Shop-Kontext befinden?
- Test: Setzen Sie unterschiedliche Konfigurationen in zwei Shops und überprüfen Sie, ob beide Frontends den Unterschied widerspiegeln.
Ein nicht Multistore-fähiges Modul verursacht nicht unbedingt Probleme — aber alle Shops teilen sich seine Einstellungen. Ob das akzeptabel ist, hängt von der Funktion des Moduls ab.
SEO-Überlegungen
Canonical URLs
Jede Seite in jedem Shop muss eine Canonical URL haben, die auf sich selbst verweist. Überprüfen Sie, dass ein Produkt auf shop-a.com auf shop-a.com kanonisiert, nicht auf shop-b.com. Bei identischen Inhalten in mehreren Shops legen Sie eine primäre Quelle fest und implementieren Sie shopübergreifende Canonical Tags.
Hreflang für mehrsprachige Shops
Wenn Shops verschiedene Sprachen/Regionen ansprechen, teilen Hreflang-Tags den Suchmaschinen mit, welche Version welchem Publikum angezeigt werden soll:
<link rel="alternate" hreflang="de" href="https://de.myshop.com/produkt" />
<link rel="alternate" hreflang="fr" href="https://fr.myshop.com/produit" />
<link rel="alternate" hreflang="x-default" href="https://www.myshop.com/product" />
PrestaShop verarbeitet Hreflang für Sprachvarianten innerhalb eines einzelnen Shops, aber nicht shopübergreifend. Für shopübergreifendes Hreflang benötigen Sie ein Modul oder Template-Anpassungen. Die Tags müssen bidirektional sein — wenn Shop A auf Shop B verweist, muss Shop B auch auf Shop A verweisen.
Sitemaps und Duplicate Content
Jeder Shop benötigt seine eigene sitemap.xml mit ausschließlich seinen eigenen URLs. Registrieren Sie jeden Shop separat in der Google Search Console. Um Duplicate-Content-Abstrafungen zu vermeiden: Passen Sie Produktbeschreibungen pro Shop an, verwenden Sie Canonical Tags für gemeinsame Inhalte und heben Sie Kategorieseiten durch einzigartige Beschreibungen voneinander ab.
Für mehrsprachige Shops auf separaten Domains sind Hreflang-Tags Pflicht, nicht optional. Ohne sie können Suchmaschinen die falsche Sprache für den jeweiligen Markt indexieren.
Auswirkungen auf die Performance
Multistore erzeugt Mehraufwand in drei Bereichen:
- Konfigurationstabellen: N Zeilen pro Einstellung (eine pro Shop) statt einer. Mehr Daten bei jedem Konfigurationszugriff.
- SQL-Abfragen: Nahezu jede Abfrage erhält eine
WHERE id_shop = X-Klausel. Ohne geeignete Indizes verlangsamt sich das mit wachsender Datenbank. - Cache-Bedarf: Jeder Shop hat eigene Cache-Einträge für Templates, Konfigurationen und Listings. Der Speicherbedarf skaliert mit der Anzahl der Shops, und das Cache-Warming dauert länger.
Stellen Sie bei Redis/Memcached sicher, dass die Cache-Schlüssel-Präfixe die Shop-ID enthalten, um shopübergreifende Datenlecks zu verhindern. Überwachen Sie die Datenbank mit diesen Abfragen:
# Check table sizes
SELECT table_name, ROUND(data_length/1024/1024, 2) AS size_mb
FROM information_schema.tables
WHERE table_schema = 'prestashop'
ORDER BY data_length DESC LIMIT 20;
# Find missing indexes on id_shop columns
SELECT t.table_name, c.column_name
FROM information_schema.columns c
JOIN information_schema.tables t
ON c.table_schema = t.table_schema AND c.table_name = t.table_name
WHERE c.table_schema = 'prestashop' AND c.column_name = 'id_shop'
AND c.column_name NOT IN (
SELECT column_name FROM information_schema.statistics
WHERE table_schema = 'prestashop' AND table_name = c.table_name
);
Häufige Multistore-Probleme
Produkte im falschen Shop
Ursache: Produkt wurde im „Alle Shops“-Kontext erstellt. Lösung: Wechseln Sie in den Kontext des ungewollten Shops und deaktivieren/entfernen Sie die Produktzuordnung. Überprüfen Sie mit:
SELECT ps.id_product, ps.id_shop, ps.active
FROM ps_product_shop ps WHERE ps.id_product = 123;
Konfigurationsänderungen betreffen alle Shops
Ursache: Sie befanden sich im „Alle Shops“-Kontext, oder das Modul speichert Werte global. Überprüfen Sie die Speicherung:
SELECT id_shop, name, value FROM ps_configuration
WHERE name = 'MODULE_SETTING_NAME' ORDER BY id_shop;
Wenn nur eine Zeile mit id_shop = NULL vorhanden ist, speichert das Modul global. Kontaktieren Sie den Anbieter oder erstellen Sie manuell shopspezifische Einträge.
Modul speichert keine shopspezifischen Einstellungen
Ursache: Das Modul verwendet Configuration::updateGlobalValue() statt Configuration::updateValue(). Erfordert eine Code-Änderung im Modul oder ein Update vom Anbieter.
Gemischter Warenkorb über Shops hinweg
Ursache: Cookie-Domain zu breit gesetzt (z. B. .meinshop.com statt shop-a.meinshop.com). Beheben Sie dies unter Shop-Parameter → Allgemein — setzen Sie die Cookie-Domain auf die spezifische Subdomain pro Shop.
Import ordnet Produkte dem falschen Shop zu
Ursache: Das Import-Tool berücksichtigt den aktuellen Kontext. Wählen Sie immer den Ziel-Shop aus, bevor Sie die Import-Seite öffnen. Überprüfen Sie nach dem Import die ps_product_shop-Einträge.
Weiterleitungsschleifen nach dem Hinzufügen eines Shops
Ursache: Fehlerhafte URL-Konfiguration oder veraltete .htaccess. Lösung: Generieren Sie die .htaccess über die Performance-Einstellungen neu, überprüfen Sie die ps_shop_url-Einträge und stellen Sie sicher, dass die SSL-Konfiguration konsistent ist:
SELECT s.name, su.domain, su.domain_ssl, su.physical_uri, su.virtual_uri
FROM ps_shop s
JOIN ps_shop_url su ON s.id_shop = su.id_shop AND su.main = 1;
Multistore-Wartungs-Checkliste
Wöchentlich
- Überprüfen Sie, ob die Storefront jedes Shops lädt (keine Weiterleitungen, keine Fehler)
- Kontrollieren Sie, ob aktuelle Bestellungen dem richtigen Shop zugeordnet sind
- Testen Sie den checkout-Ablauf in jedem Shop
Monatlich
- Prüfen Sie Produktzuordnungen — Produkte in falschen Shops?
- Überprüfen Sie shopspezifische Konfigurationen, indem Sie in jeden Kontext wechseln
- Kontrollieren Sie die Fehlerprotokolle pro Shop
- Stellen Sie sicher, dass Sitemaps aktuell und erreichbar sind
- Testen Sie den E-Mail-Versand aus jedem Shop
- Überwachen Sie das Wachstum der Datenbankgröße
Nach Modul-Updates
- Überprüfen Sie die Modul-Konfigurationsseite in jedem Shop-Kontext
- Kontrollieren Sie das Frontend-Verhalten pro Shop
- Bestätigen Sie, dass shopspezifische Einstellungen unabhängig gespeichert werden
- Leeren Sie die Caches für alle Shops
Nach PrestaShop-Updates
- Testen Sie alle Shops sofort — Multistore-Regressionen sind häufig
- Überprüfen Sie die URL-Konfiguration erneut
- Generieren Sie die
.htaccessneu - Testen Sie den vollständigen checkout in jedem Shop
Abschließende Gedanken
PrestaShop Multistore zentralisiert den Betrieb, wenn es Ihren Anforderungen entspricht, fügt aber überall Komplexität hinzu. Die Händler, die damit erfolgreich sind, behandeln es als Architekturentscheidung, nicht als einfachen Feature-Schalter. Planen Sie es richtig, pflegen Sie es sorgfältig und halten Sie immer Backups bereit.
More guides available
Browse our knowledge base for more practical PrestaShop tutorials, or reach out if you need help.