PIM für Shopware 6 - Handbuch
Diese Seite bündelt alle Funktionen des PIM-Plugins für Shopware 6 auf einen Blick. Sie ist als kompakte Referenz gedacht - für ausführliche Anleitungen mit Screenshots verweisen wir auf die detaillierten Doku-Seiten zu den einzelnen Bereichen.
Das PIM-Plugin ist kompatibel mit Shopware 6.5, 6.6 und 6.7. Alle hier beschriebenen Funktionen stehen in allen drei Versionen identisch zur Verfügung.
Systemvoraussetzungen
Das PIM-Plugin läuft in jeder Standard-Installation von Shopware 6 ohne zusätzliche Server-Konfiguration.
- Shopware: 6.5, 6.6 oder 6.7
- PHP: 8.2 oder neuer
- Datenbank: MySQL 8 oder MariaDB 10.11
- Speicher: Standard-Empfehlung von Shopware reicht (256 MB+)
- Berechtigungen: Shopware-Admin-Zugang als Administrator-Rolle
Installation
Die Installation erfolgt über den Shopware Store oder per manuellem Upload.
Über den Shopware Store
- Im Shopware-Admin unter Erweiterungen → Store nach „PIM für Shopware" suchen.
- Plugin laden - es erscheint danach unter Erweiterungen → Meine Erweiterungen.
- Mit Klick auf Installieren installieren, anschließend Aktivieren.
Manuelle Installation
- ZIP-Datei aus dem Shopware Store herunterladen.
- Im Shopware-Admin unter Erweiterungen → Meine Erweiterungen die ZIP-Datei hochladen.
- Installieren und aktivieren wie oben.
Plugin aktivieren
Nach der Installation muss das Plugin aktiviert werden. Beim Aktivieren werden folgende Vorgänge ausgeführt:
- Anlage der Plugin-Konfigurationseinträge in der Datenbank
- Registrierung der ACL-Berechtigungen
- Registrierung der Menüpunkte in der Shopware-Admin-Sidebar
- Aufbau der initialen Konfigmatrix mit Defaults
PIM aufrufen
Nach der Aktivierung erscheint der Menüpunkt PIM in der Shopware-Admin-Sidebar. Beim ersten Aufruf wird das Listing aller Produkte geladen (sichtbar gemäß Sales-Channel-Berechtigungen des angemeldeten Users).
Konfigmatrix
Die Konfigmatrix ist das zentrale Steuerungselement des Plugins. Sie liegt unter Einstellungen → System → PIM-Konfiguration und steuert:
- Sichtbare Felder im Listing
- Editierbare Felder in der Mehrfachänderung
- Aktive Sprachen
- Default-Muster für Varianten-Generator
- KI-Anbieter-Konfiguration
- Export-Einstellungen für CSV
- Sichtbare Felder im Quickview-Modal
Änderungen in der Konfigmatrix wirken sich sofort auf alle Nutzer aus, ohne dass diese den Browser neu laden müssen.
Sektionsreihenfolge per Drag-and-Drop
Die Reihenfolge der Sektionen in der Produkt-Detailansicht (Stammdaten, Preise, Medien, SEO, Properties, Cross-Selling, …) lässt sich per Drag-and-Drop frei festlegen. Dasselbe gilt für die Sektionen im Varianten-Detail-Modal - beide werden in eigenen Tabs der Konfigmatrix konfiguriert.
Sektionen, in denen alle Felder deaktiviert sind, werden automatisch ausgeblendet - kein leerer Akkordeon-Header mit nichts dahinter.
Brutto-/Netto-Toggles für alle Preisarten
Alle vier Preisarten lassen sich in der Konfigmatrix unabhängig für Brutto und Netto ein- und ausblenden - sowohl für Hauptartikel als auch für Varianten:
- Verkaufspreis brutto / Verkaufspreis netto
- Einkaufspreis brutto / Einkaufspreis netto
- Streichpreis / UVP brutto / netto
- Günstigster Preis 30 Tage (Omnibus) brutto / netto
Damit ist eine reine Brutto-Pflege, reine Netto-Pflege oder gemischte Anzeige möglich - passend zur Standard-Steuerlogik des Shops oder zur Vorliebe des Pflegers. Bestehende User-Konfigurationen mit den alten Einzel-Toggles bleiben über Fallback-Logik gültig - keine Migration nötig.
SEO-URL-System - zwei Generatoren mit Zusatzfeld als Brücke
Das SEO-URL-System arbeitet in zwei klar getrennten Schritten, die über ein Canonical-Zusatzfeld zusammenspielen. Der Vorteil: Die fertigen URLs kommen aus Shopwares eigener SEO-Vorlage und überstehen jede Neu-Indexierung - auch wenn Shopware den Katalog komplett neu indexiert, bleiben deine URLs erhalten.
Alternativ: Shopware-Standard-SEO-URL
Wer das Canonical-Zusatzfeld-System nicht nutzen will, kann in der Konfigmatrix die Option „Shopware Standard SEO-URL" aktivieren (getrennt steuerbar für Produktdetail, Varianten-Modal und Quickview). Ist sie aktiv:
- zeigt das Feld die native Shopware-SEO-URL statt des StawPim-Canonical-Felds; die Canonical-Optionen werden ausgeblendet, die Hauptkategorie bleibt sichtbar
- ist das Standard-SEO-URL-Feld in Stammdaten, Varianten-Modal und Quickview direkt editierbar - es lädt die bestehende URL (auch ohne Verkaufskanal-Bindung) und schreibt per PATCH in
seo_url, ohne Duplikate zu erzeugen - bleiben bestehende Pattern-Shops unverändert (abwärtskompatibel, explizite Defaults)
Schritt 1 - „URL im Zusatzfeld generieren" (Token → Feld)
Ein Token-Pattern (z.B. {mainCategoryPath}/{name}) wird variant- und sprachgenau aufgelöst und in das Pro-Shop-Zusatzfeld staw_pim_canonical_<shop> geschrieben. Verfügbar auf zwei Wegen:
- Bulk-Lauf: Button im SEO-Tab öffnet das Modal mit Kanal-/Sprachauswahl (gruppiert nach Shop, Akkordeons, „Alle (ab)wählen" je Gruppe) und Fortschrittsanzeige
- Pro-Produkt: Button „Aus Pattern generieren" direkt in Stammdaten und Varianten - füllt das Eingabefeld, danach normal speichern
Verfügbare Tokens als anklickbare Chips: {name}, {productNumber}, {manufacturer}, {category}, {categoryPath}, {mainCategory}, {mainCategoryPath}, {options}, {properties}, {tags}, {ean}, {metaTitle} sowie Custom-Field-Tokens. Das „Feld-Pattern" ist ein eigenes Eingabefeld, getrennt vom Twig-URL-Pattern von Schritt 2.
Optionales Meta-Title-Pattern
Neben dem Feld-Pattern (Schritt 1) lässt sich optional ein Meta-Title-Pattern konfigurieren. Beim Generieren wird der Meta-Title in Klartext aufgelöst - keine Slugifizierung, Umlaute und Groß-/Kleinschreibung bleiben erhalten, Breadcrumbs werden mit „ / " verbunden - und im selben Lauf pro Sprache in den Produkt-Meta-Title geschrieben. Berücksichtigt „nur leere", kürzt bei 255 Zeichen, und die Ergebnis-Zusammenfassung zeigt die Anzahl geschriebener Meta-Titles. Die Variablen-Chips stehen auch unter dem Meta-Title-Feld zur Verfügung.
Schritt 2 - „SEO URLs generieren" (Twig → Datenbank)
Ein Twig-Pattern liest die Zusatzfelder und wird als Shopwares native SEO-URL-Vorlage (seo_url_template) je Verkaufskanal gesetzt. Die Neuindexierung läuft über Shopwares eigenen SeoUrlGenerator - Shopware erzeugt die URLs selbst aus dem Zusatzfeld. Typisches Pattern für Migrationen:
{% if staw_url_product_detail %}{{ staw_url_product_detail|raw }}{% else %}{{ product.customFields.staw_pim_canonical_shop|raw }}{% endif %}
Migrierte Produkte behalten so ihre bestehende URL, neue Produkte nutzen das von Schritt 1 gefüllte Feld. Geänderte Pfade bleiben als 301-Weiterleitung erhalten - kein SEO-Verlust, kein 404 für bestehende Links.
Pattern-Editor mit Textarea, Stift und Twig-Syntax-Check
Das Pattern-Eingabefeld ist eine Textarea mit Auto-Höhe - bei langen Patterns mit {% if %}-Abfrage ist die ganze Logik sichtbar. Pro Pattern:
- Stift-Icon zum Bearbeiten - öffnet einen großen Editor mit Variablen-Chips
- Variablen-Chips kontextabhängig: Token-Chips für Schritt 1, offizielle Shopware-SEO-Twig-Variablen (Produktdetailseite) für Schritt 2. Felder werden direkt mit
|raweingefügt - Live-Twig-Syntax-Check: Ungültiges Twig wird rot gemeldet, Speichern ist gesperrt
- Mix-Warnung: Wenn
{tokens}und Twig ({% %}/{{ }}) im selben Pattern stehen, warnt der Editor - das funktioniert nicht, da Shopware die Twig-Ausgabe slugifiziert und Token-Klammern entfernt. Empfehlung: reines Twig oder reines Token-Pattern
Eigenes Pattern pro Shop - für beide Generatoren
Der Pro-Verkaufskanal-Pattern-Editor ist für beide Generatoren verfügbar: Schritt 1 kann ein eigenes Token-Pattern je Verkaufskanal erhalten, Schritt 2 ein eigenes Twig-Pattern. Shop-Patterns sind eine Liste: Jeder Shop mit eigenem Pattern wird mit Name + Pattern angezeigt - per Stift bearbeiten oder Papierkorb entfernen. „Pattern für Shop hinzufügen" öffnet das Editor-Modal mit Kanal-Auswahl. Shops ohne eigenes Pattern verwenden das Standard-Pattern.
Das Generierungs-Modal
Beide Generatoren öffnen ein geführtes Modal (im PIM-CI mit Indigo-Akzenten):
- Verkaufskanal + Sprachen wählen - alle aktiven Kanäle, nach Shop gruppiert als Karten mit Sprach-Akkordeons darunter (initial zugeklappt, nichts vorausgewählt). Je Gruppe „Alle (ab)wählen" mit Zähler, plus globaler „Alle auswählen"-Button. Pro Kanal Badges: Anzahl Produkte (nur tatsächlich im Kanal sichtbare, inkl. Varianten) und Anzahl ohne SEO-URL.
- Optionen:
- „Alte URLs als 301 behalten" - geänderte Pfade bleiben als Redirect erhalten
- „Nur fehlende SEO-URLs erzeugen" - bestehende/migrierte URLs bleiben unangetastet
- „Alle Produkt-URLs entfernen (Reset)" - löscht alle SEO-URLs der gewählten Kanäle/Sprachen (inkl. Shopwares globaler Detail-URLs der Sprache) und baut frisch auf. Die anderen Optionen springen sichtbar auf AUS
- Vorschau - wählt Beispielprodukte, die im Kanal sichtbar sind und deren Pattern auflöst; bis zu drei echte Beispiel-URLs, lange URLs werden umbrochen, Box scrollbar.
- Probelauf oder Generierung - der Probelauf zeigt den kompletten Lauf ohne zu schreiben. Ergebniskarten farbcodiert: Neu = grün, Änderung = blau, Übersprungen = grau, Warnung = amber, Fehler = rot.
Der Fortschrittsbalken zeigt Prozentanzeige mit Indigo-Verlauf. Die Generierung läuft chunked - auch zehntausende Produkte ohne Timeout.
Ergebnisbericht und Konflikte
- Geschrieben / Übersprungen / Redirects als Zähler
- „N ohne gerenderten Pfad" - Produkte, deren Pattern nichts ausgibt (z.B. Migrations-Feld und Canonical-Feld beide leer). So ist sofort sichtbar, warum nichts geschrieben wurde
- Konflikte mit Produktnummern statt internen IDs. Pfade, die bereits von einer anderen Route belegt sind (z.B. Kategorie mit gleichem Slug), werden sauber übersprungen und als „Pfad bereits anderweitig vergeben" gemeldet - kein Duplicate-Key-Abbruch
{mainCategoryPath}/{name}-{options}.Slug-Behandlung: Umlaute, Schrägstriche, Punkte
- Umlaute und Sonderzeichen (auch in statischem Pattern-Text wie einem wörtlichen „für/") werden konvertiert: ä→ae, ö→oe, ü→ue, ß→ss; „&" und Leerzeichen werden zum Trennzeichen
- Schrägstriche und Punkte bleiben erhalten - Kategorienamen mit „/" und Artikelnummern/Namen mit „." (z.B.
.html-Suffixe) laufen unverändert durch - Twig
|rawautomatisch: Shopwares SEO-Umgebung slugifiziert jede Twig-Ausgabe (inkl. Schrägstriche → „-"). Nackte Ausgaben von Pfad-Feldern bekommen in allen Generierungspfaden automatisch|rawinjiziert - Vorschau und Server-Generierung verhalten sich identisch - was die Vorschau zeigt, wird auch geschrieben
- Sicherheitsnetz: Leeres Canonical-Feld → Fallback auf den Produktnamen statt leerem Pfad
Sprach-Fallback bei mehrsprachigen Shops
Bei der Generierung werden durchgängig die kanal-/sprachspezifischen Werte verwendet (Name, Hersteller, Kategorie, Varianten-Optionen). Fallback-Kette: angefragte Sprache → Eltern-Sprache → System; leere oder geerbte Übersetzungen werden übersprungen. Gilt für Token- und Twig-Generierung - keine versehentliche Standardsprache in fremdsprachigen URLs.
Varianten: eindeutige URLs
Beide Generatoren verarbeiten Parent und Varianten. Geerbte Felder werden aus dem Parent aufgelöst (inkl. übersetzter customFields mit Vererbung). Die Tokens {options}, {properties} und {tags} liefern sprachübersetzte Werte - ein Pattern wie {mainCategoryPath}/{name}-{options} erzeugt pro Variante und Sprache eine eindeutige URL, keine doppelten Pfade zwischen Varianten desselben Parents.
Kategorie-Pfad deterministisch
{mainCategoryPath}/{categoryPath} nutzen die Hauptkategorie des jeweiligen Verkaufskanals. Ist keine gesetzt, bevorzugt der Fallback die tiefste zugewiesene Kategorie (längster Pfad) - deterministisch statt beliebig. Bei leerer category.path-Spalte (Indexer-Rückstand nach Importen) wird die Ahnenkette über parent_id rekonstruiert.
…/config/seourl öffnet wieder den SEO-Tab.Standard-Steuersatz für neue Produkte
Beim Anlegen eines neuen Produkts wird automatisch der erste Steuersatz aus dem Shopware-System vorausgewählt (sortiert nach position ASC). Sowohl taxId als auch taxRate werden gesetzt, sodass die Brutto/Netto-Berechnung sofort funktioniert.
Validation-Modal mit Scroll-to-Section
Klick auf Speichern während Pflichtfelder leer sind: statt einer Warn-Banner-Wand öffnet sich ein Modal mit allen Fehlern. Klick auf einen Fehler springt direkt zur betroffenen Sektion - sie wird aufgeklappt, das Feld wird mit einer indigo Outline für rund 2,5 Sekunden hervorgehoben.
Berechtigungen (ACL)
Das Plugin registriert eine eigene Rechtegruppe „StawPim (Produkte)" im Shopware-ACL-System. Zu finden unter:
Einstellungen → Benutzer & Berechtigungen → Rollen → eine Rolle wählen oder anlegen → Gruppe „Kataloge" → „StawPim (Produkte)"
Vier Rollen pro Benutzer-Rolle
staw_pim.viewer- Ansehen: PIM-Bereich aufrufen, Produkte listen, Konfigurationsmatrix sehen. Voraussetzung für alle anderen Rollen.staw_pim.editor- Bearbeiten: Inline-Edit, Mehrfachänderung, Quickview-Modal, KI-Textgenerierung. Setzt viewer voraus.staw_pim.creator- Anlegen: Neue Produkte anlegen, CSV-Import, Varianten-Generator. Setzt viewer + editor voraus.staw_pim.deleter- Löschen: Produkte löschen. Setzt viewer voraus.
Rollenbasierte Menü-Sichtbarkeit
Ohne Recht „StawPim: Ansehen" sind die Menüpunkte nicht sichtbar - Dashboard, Produkte und Konfigurationsmatrix erscheinen für nicht berechtigte Nutzer gar nicht erst. Auch die automatische Weiterleitung von der Shopware-Standard-Produktliste auf die PIM-Liste respektiert das Recht.
Feed-Generator separat freigebbar
Im Superadmin-Bereich „Funktionen für normale Benutzer" gibt es einen eigenen Schalter „Feed-Generator" - damit lässt sich der Feed-Generator-Button (in der Produktliste) für Nicht-Superadmin-Benutzer gezielt an-/abschalten, unabhängig von CSV-Import/Export. Standard: aktiv. Superadmins sehen den Button immer.
Weitere Feature-Schalter
Neben dem Feed-Generator lassen sich einzelne Funktionen gezielt für normale Benutzer ein-/ausblenden:
- „Produkte duplizieren" - getrennt von „Produkte erstellen". Deaktiviert blendet den Duplizieren-Eintrag im Kontextmenü aus.
- „Varianten generieren (Mehrfachänderung)" - deaktiviert blendet den Varianten-Generieren-Tab in der Mehrfachänderung aus.
- „Kategorien verwalten" - eigene Berechtigung für die Kategorien-Verwaltung (Button „Kategorien").
Das Anlegen neuer Produkte lässt sich weiterhin über die bestehende Rolle „Anlegen" (staw_pim.creator) abschalten.
product.viewer etc.) implizit gewährt - jetzt ist es explizit. Admin-Rollen sehen wie bisher alles.product.viewer, custom_field_set:read, sales_channel:read, language:read, product_stream:read, tag:read, delivery_time:read, unit:read, tax:read. editor grants product.editor, creator grants product.creator, deleter grants product.deleter - alles über die offizielle Shopware-Privilege-API.CSV-Import-Tab
Sprachen
Das PIM unterstützt alle in Shopware angelegten Sprachen. Sichtbar und editierbar werden Sprachen, die in der Konfigmatrix als aktiv markiert sind. Pro Sprache wird ein eigener Tab im Detail-Editor angeboten.
Aufbau des Listings
Das zentrale Produktlisting ist die Hauptansicht des PIM mit folgenden Elementen:
- Filter-Bar oben - beliebig viele Filter-Bedingungen mit UND/ODER-Verknüpfung
- Spalten-Header - sortierbar, breitenanpassbar, ein-/ausblendbar
- Datenzeilen - pro Produkt eine Zeile, mit Variantenartikel-Aufklappen on-demand
- Footer-Toolbar - Auswahl-Anzahl, Bulk-Aktionen, Export/Import-Buttons
- Bottom-Save-Bar - erscheint bei aktiven Inline-Änderungen mit Speichern/Verwerfen
Filter mit UND/ODER
Filter-Bedingungen können beliebig kombiniert werden:
- 9 Vergleichsmodi pro Feld: enthält, enthält nicht, ist gleich, ist nicht gleich, beginnt mit, endet mit, ist leer, ist nicht leer, ist in Liste
- UND/ODER-Logik zwischen Filter-Bedingungen - auch verschachtelt
- Variantenartikel-aware - Filter berücksichtigen Hauptartikel und Varianten
- Verfügbar für alle Felder inkl. Custom Fields und mehrsprachiger Felder
Spalten konfigurieren
Sichtbare Spalten lassen sich pro User individuell konfigurieren - Hinzufügen über Plus-Icon oben rechts, Reihenfolge per Drag-and-Drop, Breite per Drag am Spalten-Rand, Sortierung per Klick auf den Spaltenkopf. Alle Einstellungen werden pro User gespeichert.
Eigene Spalten anlegen
Über den Button „Eigene Spalte" (oben rechts in der Spalten-Konfiguration) öffnet sich ein Dialog, in dem du eine zusätzliche Spalte mit eigenem Namen und einem Quellfeld definierst:
- Quellfeld: entweder ein Stammdatenfeld (Erscheinungsdatum, Bestand, Maße, weitere Datumsfelder, …) oder ein beliebiges Zusatzfeld (Custom Field). Die Auswahl ist ein durchsuchbares Dropdown mit Gruppen-Überschriften (Stammdaten / Zusatzfelder) - lange Zusatzfeld-Listen filterst du per Tippen.
- Sortierbar machen: Ein Schalter im Dialog erlaubt das Sortieren der Liste über diese Spalte (Klick auf den Spaltenkopf). Sortiert wird über den DAL-Pfad des Feldes (Stammdatenfeld oder
customFields.<name>). - Automatische Formatierung: Werte werden passend dargestellt - Datum im deutschen Format, Ja/Nein bei Boolean-Feldern.
Neue Spalten erscheinen in der Spaltenliste, lassen sich über die Pfeile einordnen, wieder entfernen und werden persistent in der Konfiguration gespeichert.
Filter- und Spalten-Presets
Häufig genutzte Konfigurationen können als Preset gespeichert werden - eigene, geteilte und System-Presets.
Inline-Bearbeitung
Direkt im Listing können Felder per Klick editiert werden. Bestand, Preis, EAN, Herstellernummer, Gewicht sowie der Aktiv-Toggle sind inline editierbar - auch für Varianten. Nach dem Speichern wird der Wert verifiziert (Read-back). Wenn Shopware den Wert verwirft - z.B. wegen Vererbungslogik bei Varianten - erscheint ein Warnhinweis statt fälschlich Erfolg.
Unterstützte Eingaben: Text-Felder, Zahlenfelder mit Locale-bewusster Trennung, Toggle-Slider, Dropdown mit Suche, Multi-Select-Chips, native Date-Picker.
Tastenkürzel: Enter bestätigt, Esc bricht ab, Tab springt zum nächsten Feld.
Quickview-Modal
Direkt aus dem Listing kann pro Produkt ein Quickview-Modal geöffnet werden - über das Quickview-Icon in der Zeile. Es zeigt die wichtigsten Stammdaten kompakt zur direkten Bearbeitung, ohne Wechsel in die volle Detailansicht.
Inhalte des Modals:
- Artikel-Basisdaten: Artikelnummer, Name, EAN, MPN, Aktiv-Status
- Preise: Brutto/Netto, Einkaufspreis (brutto + netto), Omnibus-Preis (regulationPrice)
- Bestand & Versand: Bestand, Wiederauffüllzeit, Closeout-Toggle, Versandkostenfrei
- Bestellmengen: Min/Max/Schrittweite
- Beschreibung als Textarea
- SEO: Meta-Title, Meta-Description, Suchbegriffe
Header-Layout
Der Modal-Header zeigt den Variantennamen vorne (groß und dunkel), die Artikelnummer als sekundäre Information dahinter (klein, grau) - analog zur Stammartikel-Variantenmaske. So ist bei Variantenpflege auf den ersten Blick klar, welche Variante gerade bearbeitet wird.
Einheitliche Eingabefelder
Alle Eingabefelder im Quickview folgen der gleichen Struktur: Label oben, Eingabefeld darunter (42 px Höhe) - konsistent zum Rest des Plugins. Das gilt für Text-Felder, Zahlen-Felder, Selects und Toggles.
Alles ausklappen / Alles einklappen
Im Modal-Header gibt es einen Button Alles ausklappen bzw. Alles einklappen - analog zur Detailansicht der Stammdaten. Damit lassen sich alle Akkordeons in einem Schritt öffnen oder schließen.
Welche Felder im Quickview sichtbar sind, steuerst du in der Konfigurationsmatrix unter „Quickview" - pro Sektion. Sektionen ohne aktivierte Felder werden automatisch ausgeblendet.
Variantenanzeige
Variantsartikel werden im Listing als Hauptartikel-Zeile dargestellt. Per Klick auf das Plus-Icon werden die Varianten inline darunter aufgeklappt, ohne Page-Wechsel.
Kompakte Variantenansicht: In der Konfigmatrix unter Allgemein → Produktliste lässt sich die Option „Kompakte Variantenansicht" aktivieren. Varianten werden dann platzsparend dargestellt - ohne große Einrückung, ohne Vorschaubild und mit deutlich flacheren Zeilen; der Varianten-Marker (└) sitzt mittig. Inhalte (Name + Optionen) bleiben vollständig erhalten, auch bei sehr langen Variantennamen (die Zeilen wachsen bei Bedarf mit, ohne Überlappung). Nach dem Umstellen in der Konfigmatrix „Speichern" klicken.
Bild-Upload per Drag & Drop
In den Stammdaten und in der Varianten-Ansicht gibt es in der Sektion „Bilder/Medien" eine Drag-&-Drop-Zone (unterhalb der Bilder). Dateien ablegen oder per Klick den Datei-Dialog öffnen - beides funktioniert, mit Fortschrittsanzeige.
- Uploads landen in der Shopware-Mediathek (Produkt-Ordner) und werden sofort dem Produkt zugeordnet
- Das erste Bild wird automatisch Titelbild, falls noch keins gesetzt ist
- Varianten: Ein hochgeladenes Bild wird zum eigenen Bild der Variante und überschreibt das geerbte. Entfernt man das eigene Bild, werden wieder die Bilder des Hauptprodukts geerbt - beides bleibt jederzeit möglich
Freigabe-Workflow - Status „In Bearbeitung"
Zusätzlich zu Freigeben/Ablehnen/Einreichen gibt es den Status „In Bearbeitung", den Bearbeiter selbst an einem Produkt setzen können - als Signal an das Team, dass gerade jemand daran arbeitet. Der Status ist überall berücksichtigt:
- Detailansicht: Status-Badge + Button zum Setzen
- Produktliste: Filter und Status-Indikator (Indigo)
- Einstellungen: Freigabe-Statistik zählt „In Bearbeitung" mit
Kategorie-Zuweisung mit Chips
Zugewiesene Kategorien werden als entfernbare Chips unter dem Kategoriebaum aufgelistet (kleines × zum Entfernen). So ist auf einen Blick ersichtlich, welche Kategorien ausgewählt sind - ohne im Baum suchen zu müssen.
Produkt anlegen - geführtes Modal
Der Button „Produkt anlegen" öffnet ein Modal, das vor dem Anlegen die Grundlagen abfragt - statt ein leeres, kategorieloses Produkt direkt in den Katalog zu schreiben. So entstehen keine unsichtbaren Karteileichen mehr.
Das Modal ist bewusst auf das Wesentliche reduziert: Name, Artikelnummer (aus dem Nummernkreis reserviert, editierbar) und Verkaufskanal-Sichtbarkeit (vorausgewählt), untereinander dargestellt. Preis (0), Standard-Steuersatz und der Inaktiv-Status werden still als Defaults gesetzt - diese und die Kategorien pflegst du anschließend auf der Detailseite, die direkt nach dem Anlegen geöffnet wird.
Die Eingabefelder folgen dem PIM-CI (1,5px-Ränder, 8px-Radius, Indigo-Fokusring, einheitliche Höhe), inklusive der Steuersatz-Auswahl.
Duplizieren: Beim Duplizieren eines Produkts vergibt das PIM die nächste freie Artikelnummer aus dem Shopware-Nummernkreis (wie beim manuellen Anlegen) statt ein -Copy-Suffix anzuhängen; der Name erhält den Zusatz „(Kopie)". Varianten der Kopie bekommen ihre Nummer als <neue Nummer>.<Index> (Shopware-Varianten-Konvention). Fällt der Nummernkreis aus, greift der -Copy-Suffix als Fallback.
Erscheinungsdatum
Das Erscheinungsdatum (Shopwares releaseDate) heißt im gesamten PIM einheitlich so - auf der Detailseite, in der Konfigmatrix, der Mehrfachänderung, im Feed-Generator, im CSV und in der Varianten-Schnellpflege. (Frühere Versionen nutzten einen Mix aus „Erscheinungsdatum", „Freigabedatum" und „Veröffentlichungsdatum".)
- Detailseite: Das Feld sitzt im Abschnitt „Lieferbarkeit" (nicht mehr unter „Sichtbarkeit"). Der Abschnitt öffnet sich auch, wenn nur das Erscheinungsdatum-Feld aktiviert ist.
- Varianten: Pro Variante setzbar - sowohl in der Varianten-Schnellpflege als auch im Varianten-Detail-Modal, jeweils im Lieferbarkeits-Abschnitt. Leer erbt vom Hauptartikel (ausgegraut dargestellt wie die übrigen vererbbaren Felder). In der Feld-Matrix „Varianten Lieferbarkeit" ein-/ausblendbar (Default an).
- Anzeige & Speicherung: Der Datepicker zeigt das Datum im deutschen Format (TT.MM.JJJJ) ohne Uhrzeit, speichert intern aber weiterhin den vollständigen Datetime-Wert (Shopware-Standard).
availableAt-/„Verfügbar ab"-Spalte aus früheren Exporten wird beim CSV-Import aus Kompatibilitätsgründen weiterhin auf das Erscheinungsdatum gemappt - aber nur, wenn das Erscheinungsdatum selbst leer ist. Das frühere separate Feld „Verfügbar ab" gibt es nicht mehr (es wurde nie gespeichert, da die Produkt-Entität diese Spalte nicht hat).Kategorien-Verwaltung
Ein Button „Kategorien" (links neben dem Feed-Generator) öffnet ein Modal zur kompletten Kategorie-Verwaltung - kein Wechsel in den Shopware-Standard nötig.
- Baum je Verkaufskanal: Die Verkaufskanal-/Sprach-Auswahl nutzt den Channel-Bar im Stammdaten-Stil (mit Icons und Feld-Rahmen). Pro Kanal wird der Baum ab der Navigations-Wurzel aufgebaut, die Einstiegs-/Wurzelkategorie steht oben. Geladen wird direkt über das
category-Repository (kein separater API-Endpoint). - Anlegen, bearbeiten, löschen: Kategorien lassen sich anlegen, umbenennen, aktivieren/deaktivieren und löschen. Neue Kategorien werden in der Systemsprache angelegt. Ein Button „Neue Kategorie" in der Leiste legt schnell eine Wurzelkategorie im gewählten Kanal an. Die Lösch-Bestätigung ist ein Dialog im PIM-CI-Stil (kein Browser-Confirm).
- Felder je Sprache: Name, Beschreibung und SEO-Felder werden pro Sprache gepflegt; ein Sprachwechsel lädt Baum und Detail neu, sodass übersetzte Felder erscheinen. Die Beschreibung ist ein WYSIWYG-Editor (sw-text-editor) mit sichtbarer HTML-Formatierung.
- Typ, Layout & mehr: Übergeordnete Kategorie und Typ setzen, ein Layout (CMS-Erlebniswelt) zuweisen (inkl. Button „Neue Erlebniswelt anlegen", öffnet den CMS-Editor in neuem Tab), externer Link bei Link-Kategorien, Schalter „In Hauptnavigation anzeigen", Zusatzfelder-Abschnitt. Per Drag & Drop lassen sich Kategorien unter einen anderen Übergeordneten verschieben.
- KI-Texte für Kategorien: Ein Button „KI-Texte" öffnet ein Panel zum Generieren von Beschreibung, Meta-Title, Meta-Description und Keywords - über alle vier Anbieter, mit Tonalitätswahl, Ausgabe in der aktiven Sprache und freiem Feld „Weitere Anweisungen an die KI". Ein Schalter „Unterkategorien einbeziehen" generiert für den gesamten Unterbaum, ein Schalter „Bestehende Texte überschreiben" entscheidet, ob nur leere Felder gefüllt oder vorhandene ersetzt werden. Daneben steht „Übersetzen" einzeln zur Verfügung (DeepL oder KI-Anbieter, Quell- → Zielsprache).
- Kategoriebild & Alt-Text: In den Stammdaten ein Cover-Bild aus der Mediathek wählen oder hochladen (gespeichert als
category.mediaId), plus sprachabhängiger Alt-Text für Barrierefreiheit/SEO. - SEO-URL (Slug): Je Verkaufskanal und Sprache ein eigener Slug; die alte URL bleibt als 301-Weiterleitung erhalten, die neue wird Canonical und überlebt den Reindex. Leeres Feld setzt auf Shopware-Automatik zurück.
- Produktzuordnung: Pro Kategorie eine Dynamische Produktgruppe (Stream) oder ein StawPim-Preset-Filter (mit Live-Trefferanzahl; beim Speichern werden die Produkte fest zugewiesen).
- Vollständigkeits-Score & Bulk: Jede Kategorie zeigt einen Prozent-Score (Beschreibung, Meta, Bild); ein Vollständigkeits-Filter neben der Suche. Mehrfachauswahl per Checkbox für „Aktiv/Inaktiv" und „In Nav anzeigen/ausblenden" mit Snapshot/„Verlauf" und Audit-Log.
- Standard-Sortierung & Duplizieren: Pro Kategorie eine Shopware-Sortierung setzen; eine Kategorie inkl. Unterbaum als „(Kopie)" duplizieren.
- Import/Export: Kompletter Baum als mehrsprachige CSV (Spalten
feld.locale, Zusatzfelder alscf.-Spalten) oder als JSON-Backup; Import löst Eltern überparentPathauf, mit Vorschau, Validierung und Sicherung.
Mehrfachänderung - Übersicht
Die Mehrfachänderung ermöglicht es, in einem Vorgang Felder bei beliebig vielen ausgewählten Produkten gleichzeitig zu ändern.
Ablauf
- Produkte im Listing auswählen
- Klick auf Mehrfachänderung in der Footer-Toolbar
- Dialog öffnet sich - Zielfelder wählen, neue Werte eingeben
- Live-Vorschau zeigt für jedes Produkt das Ergebnis
- Bestätigen - Operation läuft in zwei Phasen (Snapshot + Apply)
- Live-Progress-Anzeige mit Counter, Phase und ETA - jederzeit per Abbrechen stoppbar
Editierbare Felder
Per Mehrfachänderung können über 25 Felder gepflegt werden:
Stammdaten
- Name (pro Sprache), Beschreibung (pro Sprache)
- Meta-Title, Meta-Description, Keywords
- Hersteller, EAN, Artikelnummer
- Produkteinheit (Stück, Liter, Kilogramm, Meter, …) - als eigene Bulk-Aktion
Preise und Grundpreis
- Listenpreis und UVP, Staffelpreise (Bulk-Apply auf alle Staffeln)
- Einkaufspreis brutto + netto als zwei getrennte Aktionen - der jeweils andere Wert wird automatisch über die Steuerklasse des Produkts berechnet
- Streichpreis/UVP, Günstigster Preis 30 Tage (Omnibus)
- Grundpreis (eigene Bulk-Aktion): Inhaltsmenge und Grundpreiseinheit gleichzeitig
- Steuersatz neu zuweisen (Bruttopreis bleibt, Netto wird neu berechnet)
Bestand und Versand
- Bestand, Lieferzeit, Versandfrei-Flag, Gewicht, Höhe, Breite, Länge
Sales Channels und Kategorien
- Sales-Channel-Sichtbarkeit (mehrere parallel)
- Hauptkategorie, Zusatzkategorien
- Cross-Selling-Zuordnungen
Properties und Custom Fields
- Properties (zuweisen und entfernen)
- Custom Fields aller Typen, Tags
Vollständige Filter-Anzeige vor jeder Operation
Vor jeder Mehrfachänderung zeigt das PIM alle aktiven Filter aus dem ausgewählten Preset als lesbare Chips: Hersteller, Kategorien, Tags, Eigenschaften, Lagerbestand-Range, Preis-Range, Gewicht-Range, Datumsbereiche, Sichtbarkeit, Steuerklasse, Lieferzeit, dynamische Produktgruppen, Verkaufskanal, EAN-Status, Closeout, Versandfrei und SEO-Meta-Status. IDs werden in lesbare Klarnamen aufgelöst (z.B. Verkaufskanal-Name statt UUID). „Keine Filter aktiv" wird mit rotem Rahmen markiert - bewusste Warnung gegen versehentliche Bulk-Operationen.
Sprachauswahl bei übersetzbaren Feldern
Bei übersetzbaren Bulk-Feldern erscheint ein Sprachdropdown, sobald ein Wert eingetragen ist. Der Wert wird in der Standardsprache gesetzt und zusätzlich in jede gewählte Sprache geschrieben - eine Aktion, mehrere Sprachen.
Felder mit Sprachauswahl:
- SEO-Tab: Meta-Title, Meta-Description, SEO-URL
- Zusatzfelder (Custom Fields): alle Custom Fields, die in Shopware als übersetzbar markiert sind
- Versand-Tab: Verpackungseinheit (singular/plural) - das einzige sprachpflichtige Feld im Versand-Bereich
Felder bewusst ohne Sprachauswahl:
- Produkteinheit / Maßeinheit: ist nur eine Referenz auf eine Einheit (Stück, Liter, kg) - die Übersetzung hängt an der Einheit selbst, nicht am Produkt
- Sprachunabhängige Felder: Preis, Lagerbestand, EAN, Gewicht, Hersteller, Aktiv-Status, Maße, Lieferzeit - diese existieren nur einmal pro Produkt
Daten-Vererbung Parent → Varianten
Eine dedizierte Bulk-Aktion überträgt Felder vom Stammartikel auf alle seine Varianten - sinnvoll für Werte, die sich zwischen Varianten nicht unterscheiden:
- Beschreibung und Meta-Texte
- Staffelpreise auf alle Varianten anwenden
- Cross-Selling-Streams übertragen
- Bilder und Mediengalerie an Varianten weitergeben
- SEO-Felder (Title, Description, Keywords) übernehmen
Die Aktion ist sowohl per Bulk-Operation auf mehrere Stammartikel anwendbar als auch im Varianten-Tab eines einzelnen Produkts verfügbar.
Snapshot & Revert
Bei jeder Mehrfachänderung wird automatisch ein Snapshot der vorherigen Werte gespeichert. Snapshots bleiben 30 Tage erhalten. Übersicht aller Snapshots unter PIM → Snapshots. Revert pro Produkt einzeln möglich oder für die gesamte Operation.
Live-Vorschau
Vor dem Speichern zeigt eine Tabelle für jedes ausgewählte Produkt: aktuellen Wert, neuen Wert nach Operation, Diff-Markierung bei Text-Feldern, Hinweis bei nicht änderbaren Feldern.
CSV-Export
Der CSV-Export erzeugt eine Datei mit allen oder gefilterten Produkten. Konfigurierbar über die Konfigmatrix.
- Spalten beliebig auswählbar - Standard-Felder, Custom Fields (einzeln pro
cf_*-Spalte), Properties, Übersetzungen - Spalten-Trenner: Komma, Semikolon, Tab
- Dezimaltrennzeichen: Punkt oder Komma - pro Export überschreibbar
- Encoding: UTF-8 (mit BOM-Option für Excel)
- Filter berücksichtigen: Aktive Filter aus dem CSV-Modal werden angewandt
- Varianten-Export: pro Profil oder global aktivierbar
- Vorgefertigte Profile: Stammdaten, SEO, Bilder, Preise & Lager, Eigenschaften & Custom Fields, Cross-Selling, Übersetzungen
Spalte „Einheit (Name)"
Zusätzlich zur Einheit-ID (UUID) wird die Produkteinheit als Klarname exportiert (z.B. „Liter", „Kilogramm", „Stück"). Im Profil „Preise & Lager" ist der Klarname als Standard aktiviert.
CSV-Import
Der CSV-Import liest eine Datei und legt neue Produkte an oder aktualisiert bestehende. Match-Logik wählbar: per Artikelnummer (Standard), ID (UUID) oder EAN.
Auto-Erkennung „Einheit"
Der Importer erkennt sowohl „Einheit (Name)" als auch „Produkteinheit" als Spaltennamen automatisch und löst Klarnamen wie „Liter" oder „Kilogramm" in die korrekte Einheit-ID auf.
Automatische Lookups
Beim Import werden fehlende Entitäten automatisch erstellt: Hersteller, Tags, Kategorien, Steuerklassen, Lieferzeiten, Eigenschaften und Produkteinheiten. Bei Varianten werden Parent-IDs auch über Artikelnummer oder EAN aufgelöst - UUIDs sind nicht zwingend nötig.
staw_pim.csv_import.DATANORM-Import (4.0 & 5.0)
Neben CSV unterstützt der Importer das im Handwerk und Großhandel verbreitete DATANORM-Format zum Einlesen von Artikeldaten aus Lieferanten-Katalogen:
- DATANORM 4.0 und 5.0: Beide Versionen werden über den
V;-Header automatisch erkannt (inkl. Versions- und Herstellererkennung). DATANORM 5.0 nutzt ein eigenes Feldlayout für Name, Preis und EAN. - Volume-Dateien: Beliebige Volume-Endungen von
.001bis.999werden akzeptiert (nicht nur.001-.003) - so lassen sich auch aufgeteilte Kataloge wieDATANORM.500einlesen. - Satzarten: Unterstützt werden u.a. A (Artikel-Stammsatz), B (Warengruppen), T (Langtext/Beschreibung) und P (Preise / DATPREIS).
Wie beim CSV-Import werden fehlende Entitäten (Hersteller, Warengruppen als Kategorien etc.) automatisch angelegt; der Abgleich erfolgt über die Artikelnummer.
Datentyp-Erkennung
Der Importer erkennt Datentypen automatisch je Sprache und Spalte:
- Boolean: 1/0, true/false, ja/nein, aktiv/inaktiv
- Datum: ISO-Notation und deutsche Notation
- Zahl: Komma oder Punkt als Dezimaltrenner
- Array: Pipe-Separator (
|) bei Multi-Select-Custom-Fields - JSON: bei komplexen Feldern wie Übersetzungen
Importierbare und exportierbare Felder
Folgende Felder sind im CSV-Export und/oder -Import verfügbar. Die Beispielwerte zeigen das erwartete Format pro Spalte (frei erfundene Demo-Daten eines Outdoor-Shops).
productNumber;name_de-DE;price;stock;taxRate;active;manufacturer;categoriesSW-TSHIRT-001;Bio-Baumwoll T-Shirt „Summit";24.90;120;19;1;Nordtrek;Bekleidung|T-ShirtsStammdaten
productNumber- Artikelnummer (Match-Schlüssel), z.B.SW-TSHIRT-001name,description- pro Sprache (name_de-DE), z.B.Bio-Baumwoll T-Shirt „Summit"bzw.<p>Weiches Bio-Baumwoll-Shirt mit Rundhals.</p>ean(4012345678901),manufacturerNumber(NT-TS-2024),manufacturer(Nordtrek)taxRate(19),active(1),markAsTopseller(0),isCloseout(0),shippingFree(0)
Preise
price(24.90),price_net(20.92),listPrice(29.90),purchasePrice(11.50)tier_*- Staffelpreise, z.B.tier_10=22.90,tier_50=19.90purchaseUnit(1),referenceUnit(1)unitIdoderEinheit (Name)oderProdukteinheit, z.B.Stück
Bestand und Versand
stock(120),minPurchase(1),maxPurchase(10),purchaseSteps(1)deliveryTime(1-3 Tage),restockTime(5)weight(0.18),width(20),height(2),length(30) - in kg bzw. mm
SEO
metaTitle(Bio-Baumwoll T-Shirt „Summit" | Nordtrek),metaDescription(Weiches Bio-Baumwoll-Shirt für jeden Tag.),keywords(t-shirt, bio-baumwolle, outdoor),packUnit(Stück) - pro Sprache
Kategorien und Sichtbarkeit
categories- Pipe-separiert, z.B.Bekleidung|T-Shirts|Herrenvisibilities- pro Channel, z.B.Hauptshop:30|Outlet:20(30 = sichtbar, 20 = im Listing versteckt)
Varianten
parentId(auch überparent_productNumber/parent_eanauflösbar), z.B.parent_productNumber=SW-TSHIRT-001mainVariantId(auch über Artikelnummer/EAN)options(Farbe:Blau|Größe:M),configuratorGroupConfig
Eigenschaften, Custom Fields, Bilder, Cross-Selling, Tags
properties- Pipe-separiert, z.B.Material:Bio-Baumwolle|Farbe:Blau|Passform:Regularcf_*- Custom Fields als einzelne Spalten, auch pro Sprachecf_*_de-DE, z.B.cf_pflegehinweis_de-DE=30°C Maschinenwäschecover,images- URL(s) der Bilder, z.B.https://cdn.example.com/tshirt-summit-blau.jpg(mehrere pipe-separiert)crossSellings- Format „StreamName:productNumber1,…", z.B.Passendes Zubehör:SW-CAP-007,SW-SOCKS-012tags- Pipe-separiert, z.B.Neuheit|Nachhaltig|Bestseller
Nur Export (nicht importierbar)
createdAt(2024-03-12 09:15:00),updatedAt, Variantenanzahl (6),sales(342),ratingAverage(4.6),availableStock(118)
Feed-Generator - automatische URL-Feeds
Über den Feeds-Tab stellst du automatisch aktualisierte URL-Feeds bereit - z.B. für Google Shopping, Preisvergleichsportale oder ERP-Anbindungen. Ein Feed liefert die Produktdaten unter einer eindeutigen URL mit Token-Authentifizierung.
Feed aus Vorlage oder Profil anlegen
Oben im Feeds-Tab gibt es den Selektor „Feed aus Vorlage / Profil anlegen". Damit aktivierst du in einem Klick einen neuen Feed:
- Built-in-Vorlage wählen - Stammdaten, Preise & Lager, SEO, Bilder, Varianten, Vollexport: Ein gespeichertes Export-Profil mit passender Feldauswahl wird automatisch erzeugt, der Feed aktiviert, ein Token generiert. Das aus der Vorlage angelegte Profil heißt z.B. „Stammdaten (Feed)".
- Bestehendes Profil wählen - Eigene Export-Profile (die du im Export-Tab gespeichert hast) lassen sich direkt als Feed aktivieren.
Akkordeon-Liste mit Status, Chips und Aktionen
Alle Feeds und alle eigenen Export-Profile erscheinen als kompakte Liste. Jede Zeile zeigt:
- Name · umbenennbar
- Status-Pille · „Feed aktiv" (grün) oder „kein Feed" (grau)
- Feed-URL-Vorschau · die tokenisierte URL bei aktiven Feeds
- Filtervorlage-Chip · die gewählte Filtervorlage oder „kein Filter"
- Produktanzahl-Chip · live ermittelt aus dem Katalog
- Stift-Symbol rechts (öffnet/schließt den Editor) und Papierkorb (löscht mit Sicherheitsabfrage)
Ein Klick auf die Zeile öffnet und schließt den Editor zuverlässig - ein Chevron rechts zeigt den Zustand und dreht sich beim Öffnen. Der Papierkorb-Button reagiert separat (verhindert versehentliches Auf-/Zuklappen).
Editor mit Umbenennen, Modus, Filtervorlage
Im aufgeklappten Editor stehen alle Konfigurations-Optionen pro Feed:
- Namensfeld - Feed umbenennen (Name muss eindeutig sein; Kollision wird abgelehnt)
- Aktivieren-Toggle - Feed online/offline schalten
- Modus - XML, CSV, TSV oder JSON
- Filtervorlage - Auswahl aus den gespeicherten Filtervorlagen
- Feed-URL - fertig zum Kopieren
- Token - anzeigen oder regenerieren
Filtervorlagen - was wird übernommen, was bewusst nicht
Statt einfacher Filter-Checkboxen wählst du im Feed eine gespeicherte Filtervorlage - die gleiche, die du auch im Listing oder bei der Mehrfachänderung nutzt.
Im Feed angewendet (serverseitig zuverlässig abbildbar): Aktiv-Status, Lagerbestand (Min/Max), Hersteller, Kategorie, Verkaufskanal.
Im Feed bewusst NICHT angewendet: Qualitäts- und Vollständigkeitskriterien (z.B. „Bilder fehlen", „Meta-Daten unvollständig", „ohne Beschreibung", „SEO-Score < X"). Diese Bewertungen werden im Listing live berechnet und sind im Feed-Kontext nicht zuverlässig serverseitig abbildbar.
Migration alter Feeds
Token und URL-Format
Jeder Feed bekommt einen eindeutigen Token. Die URL hat das Format:
https://dein-shop.de/staw-pim/feed/{token}.xmlhttps://dein-shop.de/staw-pim/feed/{token}.csvhttps://dein-shop.de/staw-pim/feed/{token}.json
Der Token-Regenerieren-Button erzeugt einen neuen Token - die alte URL wird damit ungültig. Sinnvoll, wenn ein Feed-Link öffentlich geleakt wurde.
Backend & Streaming-Performance
Der FeedExportService ist auf große Kataloge ausgelegt. Vier Performance-Layer arbeiten zusammen:
- DBAL-Streaming in 2.000er-Batches - Daten werden in Chunks per PHP-Generator (
yield) ausgegeben statt komplett im Speicher gehalten. Memory-Verbrauch ist unabhängig von der Katalog-Größe. - Keyset-Pagination über
product_number(eindeutige, indizierte Spalte) stattLIMIT/OFFSET- die Ausgabezeit bleibt linear, auch bei sehr großen Katalogen. - gzip-Komprimierung serverseitig per
gzencode(), wenn der ClientAccept-Encoding: gzipsendet. Feed-CSVs komprimieren ~80-90 % - drastisch kürzere Übertragung. - Datei-Modus für die größten Kataloge: ein Scheduled Task (alle 15 Min) schreibt die Datei atomar nach
var/staw-pim-feeds/via Flysystem. Beim Abruf wird die vorgenerierte Datei ausgeliefert - keine DB-Last bei jedem Poll.
Zusätzlich: @ini_set('memory_limit', '1024M') defensiv im Endpoint - auch breite Spaltenauswahlen mit dutzenden Custom Fields laufen sauber durch. Filterkriterien (Hersteller, Kategorie, Bestandsbereich) werden serverseitig im SQL angewendet (inkl. Varianten-Vererbung auf den Hauptartikel) - kein Daten-Roundtrip in die Vue-Schicht.
Varianten-Generator - Eigenschaftsauswahl
Der Varianten-Generator erzeugt aus Property-Kombinationen automatisch Varianten zu einem Hauptartikel. Visuelle Auswahl aller Properties mit Werten gruppiert (z.B. „Farbe → rot/blau/grün"). Live-Vorschau der Kombinationen unten.
Vereinheitlichte Suche
Eine einzige Suche oben durchsucht Eigenschaften und Optionen gleichzeitig. Tippst du „rot", bleiben alle Eigenschafts-Gruppen sichtbar, die irgendwo die Option „rot" haben - und in der rechten Spalte werden die Treffer hervorgehoben.
Muster für SKU und Name & Pattern-Akkordeons
Pro Variante können SKU und Name automatisch erzeugt werden anhand eines Musters.
Verfügbare Variablen
{base}- SKU des Hauptartikels{property:Farbe},{property:Größe}- Property-Werte{counter},{counter:03}- fortlaufende Nummer
Pattern-Akkordeons
Statt zwei nackter Inputs nebeneinander: zwei eigenständige Akkordeons - eines für die Artikelnummer, eines für den Variantennamen. Eingeklappt zeigen sie das aktuelle Pattern als Code-Chip rechts; aufgeklappt erscheint das Eingabefeld plus klickbare Variable-Chips. Ein Klick auf einen Chip fügt die Variable direkt ins aktive Pattern ein.
Variantenmatrix · Bulk-Preise und Bestand
Bei einem Variant-Produkt mit vielen Optionen ist die Preis- und Bestandspflege zeilenweise mühsam. Die Variantenmatrix legt alle Varianten in einer Tabelle übereinander: Eine Achse zeigt die erste Eigenschaft (z.B. Farbe), die andere die zweite (z.B. Größe). Pro Zelle stehen Preis und Bestand zum direkten Editieren.
- Inline-Edit für Preis, Bestand, EAN, MPN
- Spaltenkonfiguration: welche Werte angezeigt werden, ist umschaltbar
- Sortierung der Eigenschaften per Drag-and-Drop
- Optional: Werte aus dem Stammartikel auf alle leeren Zellen anwenden
Sicheres Löschen
Beim Löschen von Varianten prüft das Plugin auf offene Bestellungen.
- Modus „Sicher" (empfohlen): Varianten mit offenen Bestellungen werden nicht gelöscht, sondern deaktiviert.
- Modus „Vollständig": Varianten werden gelöscht, auch wenn Bestellungen vorliegen.
KI-Textgenerierung - Anbieter und Modelle
Das PIM integriert vier KI-Anbieter direkt im Shopware-Admin. Jeder hat eine eigene Sektion in der Konfigmatrix unter Übersetzungen (Aktivieren, API-Key, Modell, Verbindungstest, Standard-Tonalität):
- Anthropic Claude: Haiku 4.5, Sonnet 4.6 (Standard), Opus 4.8, Fable 5
- OpenAI ChatGPT: GPT-5.5, GPT-5.4, GPT-5 mini (Standard), GPT-5 nano, GPT-4.1 mini
- Mistral AI: Mistral Large 3, Medium 3.5, Small 4
- Google Gemini: Gemini 3.1 Pro, 3.5 Flash, 3.1 Flash-Lite
Sind mehrere Anbieter aktiviert, kann im KI-Generator-Modal pro Aufruf der gewünschte Anbieter und das Modell ausgewählt werden. Der Produkt-Detail-Generator (inkl. Varianten) und die Inline-KI-Textkomponente nutzen alle vier Provider.
API-Key einrichten
- Beim jeweiligen Anbieter einen API-Key erzeugen (console.anthropic.com, platform.openai.com, console.mistral.ai oder Google AI Studio)
- Im PIM unter Konfigmatrix → Übersetzungen den Key in der jeweiligen Anbieter-Sektion eintragen
- Mit dem „Verbindung testen"-Button prüfen (je Anbieter separat)
- Modell auswählen und Tonalität festlegen
- Mit „Bulk freischalten" aktivieren
Was kann generiert werden
- Beschreibung (HTML) mit Absatzstruktur
- Meta-Title (max 60 Zeichen)
- Meta-Description (max 155 Zeichen)
- Keywords (komma-separierte Liste)
Stilvorlagen
5 vordefinierte Tone-Templates: Professionell, locker-modern, Premium/Luxus, technisch, emotional.
Performance
- Browser-native Virtualisierung via
content-visibility: auto - Server-side Filtering - alle Filter in der DB
- Lazy-Loading der Varianten
- Bulk-Operations in Batches mit Progress
- Minified Bundle - ca. 23 % kleiner als unminified
- Sticky Header in der Konfigmatrix
Mehrfachänderung & Import: asynchrone Indexierung
- Queue-Indexierung statt sync: Produkt-Schreibvorgänge der Mehrfachänderung nutzen standardmäßig Shopwares asynchrone Queue-Indexierung (Header
use-queue-indexing) statt synchroner Indexierung im Request. Die Schreib-Batchgröße liegt bei 25 (vorher 10) - große Bulk-Läufe laufen um ein Mehrfaches schneller. Konfigurierbar überbulkIndexingBehavior:use-queue-indexing|disable-indexing|sync. - CSV-Import ohne Komplett-Reindex: Importe nutzen ebenfalls Queue-Indexierung - nur die importierten Produkte werden asynchron nachindexiert. Der frühere Reindex des gesamten Katalogs nach jedem Import entfällt (läuft nur noch bei
importIndexingMode = 'disable'). Modi:queue|disable|sync. - Gebündelte Requests: Audit-Log-Schreibvorgänge werden alle 600 ms als ein Batch gespeichert (zusätzlich beim Verlassen der Seite); Mehrfach-Freigaben laufen über einen Batch-Endpoint (ein Request pro 200 Produkte); Bulk-Übersetzungen und Freigabe-/Audit-Writes nutzen
INSERT … ON DUPLICATE KEY UPDATE. - Varianten-Löschung gebündelt: Ein IN-Delete statt einem Statement pro Variante, mit Fehler-Rückmeldung je ID und automatischem Einzel-Fallback bei z.B. Fremdschlüssel-Sperren.
- Snapshots lazy: Bulk-Edit-Snapshots und Rückgängig-Daten (potenziell mehrere MB) werden nur einmal pro Sitzung geladen.
- Stale-Response-Schutz: Schnelle Filter-/Seitenwechsel können neuere Ergebnisse nicht mehr mit älteren überschreiben.
Diagnose & Stabilität
- Sitzungs-Fehlerprotokoll: Die letzten 50 Fehler stehen in
window._stawPimErrLog- bisher stille Fehlerpfade (Audit-Flush, Batch-Freigaben, Snapshot-Laden) protokollieren Fehlschläge, sodass Probleme auch ohne Server-Log-Zugriff über die Browser-Konsole diagnostizierbar sind. - Interne Testsuite: Leichtgewichtiger Test-Runner (kein PHPUnit nötig) prüft SEO-Fallback-Logik, Snippet-Konsistenz de-DE ↔ en-GB und Versions-Konsistenz bei jedem Release.
Troubleshooting
Listing lädt nicht
Cache leeren, Browser-Konsole prüfen, PHP-Memory-Limit prüfen (512 MB empfohlen bei großen Katalogen).
CSV-Import bricht ab
Encoding (UTF-8), Trenner und PHP-Limits prüfen.
KI-Generierung schlägt fehl
API-Key testen unter Konfigmatrix → KI → Verbindung testen. Bei Anthropic: Guthaben aufladen. Bei OpenAI: Billing-Status prüfen.
Kontakt & Support
- Feature anfragen: über das Formular
- Häufige Fragen: FAQ
- E-Mail-Support: pim@stoneandwater.online
- Hersteller: Stone & Water - Schöppingen
Antwortzeit: in der Regel 1-2 Werktage.