Zum Inhalt springen
Stone & Water
Doku · 12 Fremdsystem-Schutz

Fremdsystem-Schutz · gepflegte Texte bleiben, wie sie sind

Warenwirtschaft, Marktplatz-Connector oder Übersetzungsdienst schreiben oft per Schnittstelle in Shopware und überschreiben dabei Texte, die du im PIM gepflegt hast. Der Fremdsystem-Schutz merkt sich den PIM-Stand je Artikelnummer und Sprache und stellt ihn wieder her, sobald er von außen verändert wurde.

Wozu der Schutz dient

Viele Shops binden Fremdsysteme über Shopware-Integrationen an. Liefert ein solches System bei jedem Abgleich seine eigenen Produktnamen oder Beschreibungen mit, sind gepflegte SEO-Texte und Übersetzungen nach dem nächsten Lauf verschwunden. Der Schutz erkennt solche Schreibvorgänge und setzt die betroffenen Felder zurück. Du findest ihn in der Konfigmatrix im Tab „Fremdsysteme", standardmäßig ist er ausgeschaltet.

So funktioniert der Abgleich

  1. Referenzstand: Das PIM speichert die geschützten Felder je Artikelnummer und Sprache in einer eigenen Tabelle.
  2. Erkennen: Schreibt ein Fremdsystem über eine Integration in Produktübersetzungen, merkt das PIM die betroffenen Artikel vor. Schreibvorgänge angemeldeter Benutzer, also auch aus dem PIM selbst, frischen den Referenzstand dagegen sofort auf.
  3. Wiederherstellen: Felder, die vom Referenzstand abweichen, werden darauf zurückgesetzt. Danach hält das PIM den Stand erneut als Referenz fest.
Vererbung bleibt erhalten: Ein leeres, von der übergeordneten Sprache geerbtes Feld wird als „geerbt" gesichert und auch so zurückgeschrieben. Der Schutz unterscheidet streng zwischen „geerbt" und „leerer Text". Weil der Referenzstand an der Artikelnummer hängt, funktioniert er auch, wenn sich interne IDs bei einem Neuimport ändern.

Alle Einstellungen im Tab „Fremdsysteme"

EinstellungBedeutungStandard
Schutz aktivierenIst der Schutz aus, wird weder ein Referenzstand festgehalten noch etwas wiederhergestelltaus
Geschützte SprachenNur diese Sprachen werden überwacht. Nutzt ein Verkaufskanal eine eigene Sprache, wähle genau diesekeine
Geschützte FelderName, Beschreibung, Meta-Title, Meta-Description, Keywordsalle fünf
Als fremd geltende IntegrationenAuswahl aus deinen Shopware-Integrationen. Ohne Auswahl gilt jede Integration als fremdkeine
AuslösungEreignisse und geplanter Lauf, Nur Ereignisse, Nur geplanter Lauf (Cronjob), Nur manuellEreignisse und geplanter Lauf
Wartezeit zwischen LäufenSekunden zwischen zwei automatischen Läufen, 0 bis 360060

Ohne mindestens eine geschützte Sprache passiert nichts. Hast du Integrationen ausgewählt, behandelt das PIM Schreibvorgänge aller anderen Integrationen wie eigene Änderungen und frischt den Referenzstand auf.

Auslösung im Detail

  • Ereignisse erkennen Schreibvorgänge über Integrationen sofort und merken die Artikel vor.
  • Der geplante Lauf arbeitet diese Vormerkungen ab. Er braucht eine aktive Aufgabenverarbeitung in Shopware.
  • Nur manuell startet nichts automatisch, der Abgleich läuft ausschließlich über die Knöpfe im Tab.

Für eine automatische Wiederherstellung ist die Standardeinstellung „Ereignisse und geplanter Lauf" der richtige Weg. In allen Modi frischt jede Bearbeitung im PIM den Referenzstand auf.

Referenzstand, Prüfen und Wiederherstellen

Im Abschnitt „Referenzstand und Protokoll" stehen drei Knöpfe:

  • Referenzstand setzen: Der aktuelle Stand aller Produkte wird zum Sollzustand. Ein Bestätigungsfenster nennt die Zahl der Felder, Sprachen und bisher gespeicherten Einträge.
  • Nur prüfen: Meldet, wie viele Einträge vom Referenzstand abweichen, ohne etwas zu ändern.
  • Jetzt wiederherstellen: Prüft den gesamten Bestand und setzt alle Abweichungen zurück. Das erfasst auch Änderungen, die an der Schnittstelle vorbeiliefen, etwa einen Import direkt in die Datenbank. Der Vorgang lässt sich nicht rückgängig machen.

Darunter siehst du die Zahl der gespeicherten Referenzstände sowie den Zeitpunkt der letzten Auffrischung und des letzten Laufs.

Erst die Referenz, dann der Schutz: Setze beim Einrichten zuerst den Referenzstand und achte darauf, dass die Texte in diesem Moment stimmen. Wurde ein Text bereits von außen überschrieben, wird der fremde Text zur Referenz und lässt sich danach nicht mehr zurückholen.

Protokoll und CSV-Export

Die Tabelle zeigt die letzten zehn Läufe mit Zeitpunkt, Auslöser (Referenz gesetzt, Von Hand, Ereignis, Geplanter Lauf), geprüften, wiederhergestellten und festgehaltenen Einträgen sowie der Dauer. Gespeichert bleiben die letzten 50 Läufe. Hat ein Lauf Texte wiederhergestellt, lädst du per CSV die Liste mit Artikelnummer, Name und betroffenen Feldern herunter, ideal für die Klärung mit dem Betreiber des Fremdsystems. Die Datei nutzt Semikolon als Trennzeichen und öffnet sich in Excel mit korrekten Umlauten. Je Lauf werden bis zu 2000 Artikel festgehalten.

Geplante Aufgabe staw_pim_direct.translation_guard

Das Plugin registriert die geplante Aufgabe staw_pim_direct.translation_guard mit einem Intervall von 300 Sekunden. Sie läuft nur, wenn der Schutz aktiv ist und die Auslösung einen geplanten Lauf vorsieht, und sie beachtet die Wartezeit. Bewusst prüft sie nur vorgemerkte Artikel und keinen Vollbestand: So kann sie eine gewollte Bearbeitung nicht mit einer fremden Überschreibung verwechseln.

Aufruf über HTTP ohne Kommandozeile

Ohne Zugang zur Kommandozeile startest du den Abgleich über eine Adresse, die der Tab zum Kopieren anzeigt:

https://dein-shop.de/api/_action/staw-pim-direct/guard/cron/<Schlüssel>
  • Aufruf per GET oder POST, zum Beispiel alle fünf Minuten über den Cron-Dienst deines Hosters.
  • Standardmäßig werden nur vorgemerkte Artikel abgearbeitet. Mit angehängtem ?full=1 prüft der Aufruf den gesamten Bestand, das ist deutlich aufwendiger.
  • Der Aufruf wirkt nur bei aktivem Schutz und einer Auslösung mit geplantem Lauf. Ohne full=1 gilt die Wartezeit.
Schlüssel wie ein Kennwort behandeln: Die Adresse funktioniert ohne Anmeldung, geschützt nur durch einen 32-stelligen Zufallsschlüssel. Mit „Neuer Schlüssel" erzeugst du einen neuen, die bisherige Adresse ist sofort ungültig.

Konsolenbefehl staw:pim:guard:snapshot

Für den Erstlauf auf großen Beständen ist die Konsole der bessere Weg: Im Admin läuft das Setzen der Referenz in einer einzigen Anfrage und kann bei zehntausenden Zeilen an die Zeitgrenze des Webservers stoßen.

bin/console staw:pim:guard:snapshot
bin/console staw:pim:guard:snapshot --check
bin/console staw:pim:guard:snapshot --restore
AufrufWirkung
ohne OptionSetzt den Referenzstand für alle Produkte
--checkMeldet abweichende Einträge, schreibt nichts
--restoreStellt Abweichungen im gesamten Bestand wieder her und frischt danach die Referenz auf
--forceFührt den Befehl auch aus, wenn der Schutz ausgeschaltet ist

Ist keine geschützte Sprache gewählt, bricht der Befehl mit einem Hinweis ab.

Weiter geht's

Texte für viele Sprachen erzeugst du mit der KI-Textgenerierung oder per CSV-Import. Den Tab „Fremdsysteme" und alle anderen Einstellungen findest du in der Konfigmatrix, wer sie sehen darf, regeln Rechte & Superadmin.

Häufige Fragen

Werden meine eigenen Änderungen im PIM zurückgesetzt?

Nein. Schreibvorgänge angemeldeter Benutzer frischen den Referenzstand sofort auf. Zurückgesetzt werden nur Änderungen über Integrationen, die als fremd gelten.

Welche Felder kann ich schützen?

Name, Beschreibung, Meta-Title, Meta-Description und Keywords der Produktübersetzungen, jeweils für die gewählten Sprachen.

Brauche ich einen Cronjob?

Für die automatische Wiederherstellung muss die Aufgabenverarbeitung von Shopware laufen. Alternativ rufst du die angezeigte HTTP-Adresse regelmäßig über einen Cron-Dienst auf.

Was ist mit Importen direkt in die Datenbank?

Solche Änderungen lösen kein Ereignis aus. „Jetzt wiederherstellen", der Konsolenbefehl mit --restore oder die HTTP-Adresse mit ?full=1 prüfen den gesamten Bestand und finden sie trotzdem.