- Patryk Marek
- News
- 0 Likes
- 478 Ansichten
- 0 Kommentare
Der XML-Import ohne Duplikate beginnt mit einem festen, eindeutigen Identifikator sowie einer gespeicherten Beziehung zwischen dem Lieferantendatensatz und dem Produkt in PrestaShop. Lege vor dem ersten Start fest, was der Importer erstellen darf, welche Felder er aktualisiert und was das Fehlen eines Produkts in der nächsten Datei bedeutet. Allein ein korrektes XML beantwortet diese Fragen nicht.

Der Leitfaden richtet sich an Shops, die einen Import aus einem Großhandel oder einem anderen System planen. Zwei kleine Demonstrationsdateien zeigen, wie man ein neues Produkt, eine Datenänderung und das Fehlen eines Datensatzes unterscheidet. Sie sind weder der Feed eines realen Lieferanten noch ein universelles Format, das von jedem Importer unterstützt wird.
1. Wählen Sie das System, das für jedes Feld verantwortlich ist
Entscheiden Sie zuerst, woher der korrekte Preis, Bestand, Name und die Beschreibung stammen. Häufig ist der Großhandel für Verfügbarkeit und Einkaufspreis verantwortlich, während der Shop eine eigene Beschreibung und einen nach einer Regel berechneten Verkaufspreis pflegt. Wenn der Importer bei jeder Aktualisierung alle Felder überschreibt, kann er die im Shop geleistete redaktionelle Arbeit löschen.
| Feld | Quelle im Beispiel | Aktualisierungsregel |
|---|---|---|
| Quellidentifikator | Lieferant. | Dauerhafter Verknüpfungsschlüssel innerhalb der jeweiligen Quelle. |
| Bestand | Lieferant. | Wird nach erfolgreichem Einlesen der Daten aktualisiert. |
| Eingangspreis | Lieferant. | Mit festgelegter Währung und Information netto/brutto. |
| Verkaufspreis | Shop-Regel. | Wird nach der vereinbarten Umrechnung und den Steuern berechnet. |
| Beschreibung und SEO | Shop-Redaktion. | Ohne gesonderte Entscheidung nicht überschreiben. |
| Kategorie | Kategorienzuordnung. | Verknüpfung der Lieferantenkategorie mit der Shop-Kategorie. |
Bei mehreren Lieferanten präzisieren Sie außerdem, ob sie dieselbe Ware oder getrennte Angebote anbieten. Die Verarbeitung mehrerer Quellen bedeutet nicht automatisch das Addieren von Beständen, die Auswahl des niedrigsten Preises oder das Umschalten des Lieferanten. Eine solche Regel muss entworfen und anschließend in der konkreten Lösung bestätigt werden.
2. Verwechseln Sie die Lieferanten-ID nicht mit der Produkt-ID im Shop
Der Datensatz A-100 im XML kann dem Produkt 501 in PrestaShop entsprechen. Diese Nummern müssen nicht identisch sein. Der Importer sollte ihre Verknüpfung kennen und sie beim nächsten Einlesen verwenden. Das Erstellen einer neuen Karte bei jeder Namensänderung ist ein Fehler im Identifikationsmodell.
Der Identifikator muss über die Zeit stabil und im gewählten Bereich eindeutig sein. Wenn zwei Großhändler die Nummer 100 verwenden, sollte eine sichere Verknüpfung die Quelle berücksichtigen und nicht nur diese Zahl. Gehen Sie auch nicht davon aus, dass EAN immer verfügbar und eindeutig ist: In der Datei können Lücken, Fehler oder Wiederholungen vorkommen, die geklärt werden müssen.
| Feld | Was ist zu prüfen | Risiko ohne diese Kontrolle |
|---|---|---|
| Lieferanten-ID | Ob sie dauerhaft, eindeutig ist und Produkt von Variante unterscheidet. | Neue Karten nach einer Umnummerierung oder Zusammenführung verschiedener Angebote. |
| Index / reference | Ob er sich im Katalog nicht wiederholt und ob führende Nullen beibehalten werden. | Abgleich mit dem falschen Produkt. |
| EAN / GTIN | Vorhandensein, Korrektheit und Umfang — Stück, Variante oder Verpackung. | Kollisionen oder Abgleich verschiedener Verkaufseinheiten. |
| Name | Ob er sich nicht ändert und nicht bei mehreren Produkten vorkommt. | Duplikate nach einer Namenskorrektur; in der Regel ein schwacher technischer Schlüssel. |
| PrestaShop-ID | Ob die Quelle die Identifikatoren dieser Installation tatsächlich kennt. | Zufälliger Treffer auf ein anderes Produkt nach Migration oder Shop-Wechsel. |
Bereiten Sie vor dem ersten Abgleich mit dem bestehenden Katalog einen Bericht über fehlende und doppelte Schlüssel vor. Wählen Sie nicht automatisch das „erste gefundene“ Produkt aus, wenn es zwei Karten mit demselben Index gibt.
3. Produkt und Variante benötigen getrennte Regeln
Eine Produktkarte kann mehrere Kombinationen haben, jede mit eigenem Bestand, Index, Bild oder Einfluss auf den Preis. Legen Sie fest, ob ein XML-Datensatz die gesamte Karte oder eine einzelne Variante beschreibt. Wenn der Lieferant einzelne Größen als separate Datensätze sendet, erfordert ihre Zusammenführung zu einer Karte eine Gruppierungsregel.
Prüfen Sie auch die Bedeutung des Variantenpreises: Er kann ein vollständiger Preis oder eine Differenz zum Basisprodukt sein. Die Verwendung der Differenz als Endpreis führt zu einem falschen Ergebnis. Ähnliche Vorsicht gilt für Attributsätze — eine Änderung des Farbnamens sollte nicht ohne Entscheidung eine weitere Variante erzeugen.
Wenn der Importer den vollständigen Satz von Kombinationen synchronisiert, legen Sie fest, ob in der Datei nicht vorhandene Varianten beibehalten, deaktiviert oder gelöscht werden sollen. Das ist besonders wichtig, wenn der Shop einen Teil der Varianten selbst pflegt.
4. Zwei XML-Versionen und das erwartete Ergebnis
Die folgende Struktur wurde ausschließlich zu Demonstrationszwecken vorbereitet. Die Preise sind Netto-Eingangspreise in PLN. Im Beispiel erstellen wir keine Varianten; jeder Datensatz entspricht einer Produktkarte. Der Parser oder Adapter des konkreten Importers muss an die tatsächliche Struktur der Quelle angepasst werden.
Erste vollständige Datei
DEMO-BUTELKA
Butelka oliwkowa
50.00
12
DEMO-KUBEK
Kubek kremowy
20.00
8
Nächste vollständige Datei
DEMO-BUTELKA
Butelka oliwkowa
55.00
0
DEMO-KOC
Koc beżowy
40.00
5
Das Attribut complete="true" ist Teil unseres Beispiels, keine standardmäßige Garantie für die Vollständigkeit des XML. In einer realen Implementierung muss festgelegt werden, wie der Lieferant die Vollständigkeit bestätigt und wie der Importer sie erkennt.
Dies sind die erwarteten Ergebnisse des Szenarios, nicht das Ergebnis eines ausgeführten Imports. Die Produktnummern im Shop sind beispielhaft. Die beiden obigen Dateien haben das schematische Schema ; sie sind keine Eingabedateien des Beispiel-Adapters des Moduls.
| Quelldatensatz | Beispielhafte Verknüpfung im Shop | Erwartetes Ergebnis |
|---|---|---|
demo / A-100 | Bestehendes Produkt 501. | Aktualisierung des Eingangspreises 50 → 55 und des Bestands 12 → 0; ohne neue Karte. |
demo / A-200 | Bestehendes Produkt 502. | Fehlt in der Quelle: In dieser Demonstration lassen wir es unverändert und markieren es zur Kontrolle. |
demo / A-300 | Keine frühere Verknüpfung. | Erstellung einer neuen Karte und Speichern der Verknüpfung, wenn die Erstellung aktiviert ist. |
Die erneute Verarbeitung derselben korrekten Datei sollte weder eine weitere Flasche noch eine weitere Decke erzeugen. Der Vergleich nach dem zweiten Durchlauf ist ein einfaches Abnahmekriterium für den Abgleich. Bei einem Importer, der unveränderte Datensätze überspringt, kann auch deren Überspringen ein korrektes Ergebnis sein.
Separater Mapping-Test im Modulcode 2.0.5
Am 27. September haben wir im Speicher die Methode SampleAdapter::mapProduct() mit drei kleinen XML-Dateien unter PHP 7.0 und 8.1 geprüft. Dieser Adapter erwartet die Struktur sowie die Felder nazwa, cena_netto und stan_magazynowy. Das unterscheidet sich vom obigen schematischen -Schema. Wir haben weder einen URL-Abruf noch einen Import in die Shop-Datenbank durchgeführt.
| Versuch | Eingabedaten | Methodenergebnis |
|---|---|---|
| Erste Datei | A-100: 50.00 netto, Bestand 12; A-200: 20.00 netto, Bestand 8; ein Angebot ohne ID. | Zwei Daten-Arrays für A-100 und A-200; das Angebot ohne ID gab false zurück. |
| Zweite Datei | A-100: 55.00 netto, Bestand 0; A-300: 40.00 netto, Bestand 5. A-200 fehlt. | Daten-Arrays für A-100 und A-300. Die Methode entscheidet nicht, was mit dem fehlenden A-200 geschehen soll. |
| Preis mit Komma | A-400: 19,99 netto. | Der Beispiel-Adapter gab 19 zurück, also einen falschen Wert im Verhältnis zum beabsichtigten Preis. Für diesen Adapter erfordern Preisbeispiele einen Punkt oder eine Korrektur des Mappings. |
Laden Sie die Daten und die gespeicherten Ergebnisse des Mapping-Tests herunter (ZIP, 4,4 kB): drei XML-Dateien, Ergebnisse für PHP 7.0 und 8.1 sowie eine Vergleichsanleitung. Dies sind Materialien aus dem beschriebenen Test vom 27.09.2026, veröffentlicht am 28.09.2026. Das Paket enthält weder das Modul noch eine Konfiguration für einen vollständigen Import. Das Ergebnis 19,99 → 19 dokumentiert einen Fehler im Preisformat, nicht den korrekten Preis.
Grenze des Tests: Dies ist das Ergebnis des Feld-Mappings und kein Nachweis für die Erstellung oder Aktualisierung von Karten, die Verarbeitung von Varianten oder das Fehlen von Duplikaten nach einem erneuten Import. SampleAdapter ist in der Auswahl im Panel deaktiviert und selbst als für die Produktion ungeeignetes Beispiel gekennzeichnet. Starten Sie keinen vollständigen Import einer kurzen Probe auf einer bestehenden Quelle: Die Regel für in der Datei nicht vorhandene Produkte kann den Zustand des Katalogs verändern. Eine vollständige Abnahme erfordert eine isolierte Kopie des Shops, die Bestätigung der Vollständigkeit des Feeds und den Vergleich der Karten vor und nach dem Durchlauf.
5. Ein fehlender Datensatz bedeutet nicht immer fehlende Ware
Ein Produkt kann aus dem vollständigen Katalog verschwinden, es kann aber auch in einer Datei fehlen, die ausschließlich Änderungen enthält. Eine leere Datei, ein Anmeldefehler, ein teilweiser Abruf oder ein nicht abgeschlossener Import sind weitere Situationen. Sie sollten nicht automatisch zur Deaktivierung des gesamten Sortiments führen.
Bestätigen Sie vor der Ausführung von Operationen für fehlende Produkte den korrekten Abruf, das Einlesen und den Abschluss des richtigen Importtyps. Legen Sie auch den Umfang fest: nur Karten, die mit dieser Quelle verknüpft sind. Das Verschwinden eines Datensatzes des Großhändlers A sollte nicht selbsttätig ein manuell hinzugefügtes Produkt oder ein Angebot des Großhändlers B ändern.
Im Beispiel lassen wir die fehlende Tasse zur Kontrolle stehen, um den Unterschied zwischen fehlender Information und einem expliziten Bestand null zu zeigen. Das ist eine gewählte Demonstrationsregel, keine für jeden Shop geeignete Einstellung. Für den Produktivbetrieb muss die Entscheidung mit dem Charakter der Quelle und dem Risiko des Verkaufs nicht verfügbarer Ware verknüpft werden.
6. Vollimport und schnelle Aktualisierung
Im Code von Import hurtownia Pro / pdxmlimport 2.0.4 haben Vollimport und schnelle Aktualisierung einen unterschiedlichen Umfang. Der vollständige Pfad kann Produkte erstellen und die vom Adapter unterstützten Daten gemäß der Konfiguration aktualisieren. Die schnelle Aktualisierung betrifft Preise und Mengen von Basisprodukten, die bereits mit der Quelle verknüpft sind; sie ist kein Pfad zur Erstellung neuer Karten und auch nicht zur Aktualisierung der Bestände einzelner Kombinationen.
Gehen Sie nicht davon aus, dass Schalter zum Überschreiben von Namen und Beschreibungen jede Operation des Moduls steuern. Geben Sie vor dem Zeitplan die genaue Aktion, die Quelle und den Umfang an. Eine Änderung der Preisregel kann auch bei unverändertem XML eine erneute Verarbeitung der Daten erfordern.
Wenn Sie ausschließlich die Aktualisierung bestehender Karten aus CSV benötigen, sehen Sie sich die separaten Leitfäden zu Preisen und zu Beständen an. Die Wahl des Formats sollte sich aus den Daten und den Operationen ergeben, die tatsächlich ausgeführt werden müssen.
7. Zeitplan erst nach Kontrolle des Ergebnisses
Führen Sie den ersten Test mit einem kleinen, repräsentativen Satz durch, der ein neues Produkt, ein bereits verknüpftes Produkt, einen fehlenden Identifikator, eine Kollision und Varianten umfasst. Vergleichen Sie die Anzahl der hinzugefügten, geänderten, übersprungenen und fehlerhaften Datensätze. Öffnen Sie die Produktkarten und prüfen Sie Verkaufspreis, Bestand, Bilder sowie die Kategorienzuordnung.
Erst danach legen Sie die Reihenfolge des Abrufs und der Verarbeitung von Chargen sowie die CRON-Häufigkeit fest. Der Zeitplan sollte die Veröffentlichung der Datei durch den Lieferanten und die tatsächliche Importdauer berücksichtigen. Legen Sie fest, wer auf einen Fehler reagiert und wie ein nicht abgeschlossener Durchlauf erkannt wird. Das bloße Aufrufen der CRON-Adresse ist kein Nachweis für die Aktualisierung des gesamten Katalogs.
Senden Sie eine Probe der XML-Struktur ohne vertrauliche Daten und beschreiben Sie die Aktualisierungsregeln. Nach der Prüfung der Felder und Varianten kann der Umfang des PrestaShop-Datenimports und -exports festgelegt werden. Wenn ein bestehender Adapter diese Struktur unterstützt, prüfen Sie Import hurtownia Pro; eine andere Datenstruktur erfordert eine Anpassung und einen Test auf einer Shop-Kopie.
Der Katalogimport bedeutet nicht automatisch das Senden von Bestellungen an den Großhandel, die Reservierung von Ware oder eine bidirektionale Synchronisierung. Diese Anforderungen müssen separat in den Integrationsumfang aufgenommen werden.
Überprüfung des ursprünglichen Textes: 13. September 2026 im Code pdxmlimport 2.0.4. Separater Mapping-Test: 27. September 2026 im lokalen Code 2.0.5 unter PHP 7.0 und 8.1, ohne Import in den Shop. Die XML-Dateien und Produktnummern sind demonstrativ; sie enthalten weder Daten noch die Struktur eines geschützten Großhandels-Feeds.
Bevor Sie sich auf den Lieferantencode verlassen, prüfen Sie seine Eindeutigkeit
Im Code des XML-Importers 2.0.5 erfüllen die für die Quelle gespeicherten Beziehungen und der optionale Abgleich nach Codes unterschiedliche Aufgaben. Bei mehreren Abgleichsergebnissen kann der Importer eine Warnung speichern und das erste Ergebnis auswählen. Deshalb erfordern sich wiederholende EAN oder Referenz eine Bereinigung der Daten — die bloße Angabe des Feldes ist keine Garantie für das Ausbleiben von Fehlern.
Halten Sie im Daten- und Szenarien-Mappingblatt die Regel für den Fall fehlenden Abgleichs, mehrerer Abgleiche und einer Wiederholung fest. Bewahren Sie für jeden Versuch den Quellidentifikator sowie das richtige Produkt und die richtige Kombination im Shop auf. Erst auf dieser Grundlage bewerten Sie das Ergebnis des nächsten Durchlaufs.
Kommentare (0)