Lieferanten-Feed-Import & Dropshipping für PrestaShop 8 & 9
Multi-Lieferanten-Import (CSV, XML, JSON), Margen und Bestandssynchronisierung installieren, konfigurieren und automatisieren.
Überblick
Das Modul Lieferanten-Feed-Import & Dropshipping (technischer Name dfsupplierfeed) importiert und synchronisiert die Kataloge Ihrer Lieferanten automatisch in PrestaShop 8 und 9. Es verwaltet mehrere Lieferanten und mehrere Feeds in den Formaten CSV, XML und JSON, wendet Ihre Margenregeln an, um Verkaufspreise aus dem Einkaufspreis zu berechnen, synchronisiert den Bestand stündlich per Cron und regelt doppelte EAN13-Codes zwischen Quellen über eine Priorität pro Lieferant.
Das Modul ersetzt nicht den nativen CSV-Import von PrestaShop (für einen einzelnen manuellen Ladevorgang gedacht): Es industrialisiert wiederkehrende Importe aus mehreren Quellen, mit automatischen Margen und Bestandssynchronisierung.
Installation
- Gehen Sie im Backoffice zu Module > Modulmanager und dann Modul hochladen.
- Wählen Sie die Datei
dfsupplierfeed.zipund bestätigen Sie. - Klicken Sie nach der Installation auf Konfigurieren.
Bei der Installation erstellt das Modul fünf Tabellen (dfsf_supplier, dfsf_feed, dfsf_rule, dfsf_product, dfsf_log) und generiert ein eindeutiges Cron-Token.
Überblick über die Oberfläche
Die Konfigurationsseite ist in Registerkarten gegliedert:
- Dashboard — Zähler (Lieferanten, Feeds, verknüpfte Produkte, Regeln) und Funktionshinweis.
- Suppliers — Anlegen der Lieferanten und ihrer Priorität.
- Feeds — Definition der Feeds und ihrer Zuordnung.
- Margin rules — Regeln zur Berechnung der Verkaufspreise.
- Logs — Import-Historie.
- Settings & Cron — allgemeine Einstellungen und kopierbereite Cron-URLs.
Schritt 1 — Ihre Lieferanten anlegen
Fügen Sie im Reiter Suppliers einen Lieferanten hinzu mit:
- Name — Bezeichnung des Lieferanten.
- Priorität — Ganzzahl, wobei
1die höchste Priorität ist. Sie dient zur Auflösung doppelter EAN13 (siehe unten). - Aktiv — ein inaktiver Lieferant wird vom Cron übersprungen.
- Den nativen PrestaShop-Lieferanten erstellen — empfohlen: verknüpft einen Standard-PrestaShop-Lieferanten, wodurch auch der Einkaufspreis in
product_suppliergefüllt wird.
Vergeben Sie die besten Prioritäten (niedrigste Zahlen) an Ihre zuverlässigsten oder günstigsten Lieferanten: Sie sind es, die geteilte Produkte „besitzen“.
Schritt 2 — Einen Feed konfigurieren
Im Reiter Feeds ist jeder Feed einem Lieferanten zugeordnet und umfasst:
- Quellentyp — entfernte URL oder lokale Datei (Pfad relativ zum Shop-Root, aus Sicherheitsgründen auf dieses Verzeichnis beschränkt).
- Quelle — die URL oder der Dateipfad. Gzip-komprimierte Antworten werden automatisch dekodiert.
- Format — CSV, XML oder JSON.
- Preise inkl. Steuer? und Steuersatz — liefert der Feed Bruttokosten, rechnet das Modul sie mit diesem Satz in Nettokosten um.
- Standardkategorie — Kategorie für Produkte, die ohne explizite Kategorie erstellt werden.
- Fehlende Produkte erstellen, Bilder importieren, In die stündliche Bestandssync einbeziehen, Aktiv.
Die Feldzuordnung
Die Zuordnung ist ein JSON-Objekt, das die Spalten/Knoten Ihres Feeds mit normalisierten Produktfeldern verbindet. Die 13 verfügbaren kanonischen Felder sind: name, reference, ean13, cost, quantity, description, description_short, category, manufacturer, weight, tax_rate, image, mpn.
CSV-Zuordnung
Verknüpfen Sie jedes Feld mit einer Spaltenüberschrift (oder einem 0-basierten Spaltenindex). Das Trennzeichen wird automatisch erkannt (;, ,, Tabulator oder |) und Dezimalkommas werden akzeptiert.
{
"fields": {
"name": "product_name",
"reference": "sku",
"ean13": "ean",
"cost": "price",
"quantity": "stock",
"image": "image_url"
}
}
XML-Zuordnung
Geben Sie items_path an, den Pfad zu den wiederholten Knoten (z. B. products/product), und ordnen Sie dann jedes Feld einem relativen Pfad zu. Ein @-Präfix liest ein Attribut, und Unterelemente werden durch Schrägstriche getrennt.
{
"items_path": "products/product",
"fields": {
"reference": "@sku",
"name": "title",
"ean13": "ean",
"cost": "pricing/wholesale",
"quantity": "stock/quantity"
}
}
JSON-Zuordnung
Geben Sie items_path an, den Pfad zum Artikel-Array in Punktnotation (z. B. data.products), und ordnen Sie dann jedes Feld zu. Array-Indizes werden als numerische Segmente geschrieben (z. B. images.0).
{
"items_path": "data.products",
"fields": {
"reference": "sku",
"name": "name",
"ean13": "barcode",
"cost": "prices.cost",
"quantity": "inventory.available",
"image": "images.0"
}
}
Eine Zeile wird übersprungen, wenn sie weder eine EAN13 noch eine Lieferantenreferenz hat: Das sind die beiden Abgleichschlüssel. EANs werden validiert und dann auf 13 Ziffern normalisiert.
Schritt 3 — Ihre Margen definieren
Im Reiter Margin rules berechnet jede Regel den Nettoverkaufspreis aus dem Nettoeinkaufspreis:
- Prozent —
Kosten × (1 + Wert/100). Z. B. Wert 35 → +35 %. - Koeffizient —
Kosten × Wert. Z. B. Wert 1,8 → ×1,8. - Fester Zuschlag —
Kosten + Wert.
Anschließend wird eine optionale psychologische Rundung angewendet: x.99, x.95, x.90 oder Aufrunden auf eine Ganzzahl.
Geltungsbereich und Regelauflösung
Eine Regel kann auf einen Lieferanten, eine Kategorie, beide zielen oder global sein. Passt ein Produkt zu mehreren Regeln, gewinnt die spezifischste, in dieser Reihenfolge:
- Lieferant + Kategorie
- nur Lieferant
- nur Kategorie
- globale Regel
Kategorieregeln gelten auch für Unterkategorien: Eine Regel auf der exakten Kategorie des Produkts schlägt eine Regel auf einer übergeordneten Kategorie. Passt keine Regel, wird die Standardmarge (Reiter Settings) verwendet.
Die EAN-Priorität zwischen Quellen
Das ist der Kern des Moduls im Multi-Lieferanten-Betrieb. Wenn dieselbe ean13 in mehreren Feeds erscheint:
- Der Lieferant mit der besten Priorität (niedrigste Zahl) besitzt das Produkt; Preise, Bestand und Kosten stammen aus seinem Feed.
- Andere Quellen werden für diese Referenz übersprungen (Status „skipped“ in den Logs).
- Bringt später ein Lieferant mit besserer Priorität diese EAN, übernimmt er automatisch den Besitz des Produkts.
Sie bestimmen durch die Prioritäten, wer maßgeblich ist: dieselbe Referenz bei mehreren Großhändlern zu beziehen wird sicher, ohne dass sich die Feeds widersprechen.
Einen Import manuell starten
Im Reiter Feeds hat jeder Feed zwei Schaltflächen:
- Vollständiger Import (Play-Symbol) — aktualisiert verknüpfte Produkte und erstellt fehlende (wenn der Feed es erlaubt).
- Bestandssync (Aktualisieren-Symbol) — aktualisiert nur Preise und Mengen bereits verknüpfter Produkte.
Mit Cron automatisieren
Der Reiter Settings & Cron zeigt zwei kopierbereite, token-geschützte URLs. Richten Sie sie im Aufgabenplaner Ihres Servers ein:
# Stündliche Bestandssync (Preise + Mengen der verknüpften Produkte)
0 * * * * curl -s "https://ihrshop.tld/index.php?fc=module&module=dfsupplierfeed&controller=cron&token=IHR_TOKEN&mode=stock" > /dev/null
# Nächtlicher Vollimport (Erstellungen + Aktualisierungen)
30 3 * * * curl -s "https://ihrshop.tld/index.php?fc=module&module=dfsupplierfeed&controller=cron&token=IHR_TOKEN&mode=full" > /dev/null
Fügen Sie &id_feed=N hinzu, um nur einen einzelnen Feed zu verarbeiten. Der Endpunkt gibt einen JSON-Bericht zurück (erstellt, aktualisiert, übersprungen, Fehler pro Feed).
Wenn Sie das Token in den Einstellungen neu generieren, denken Sie daran, Ihre Cron-Jobs zu aktualisieren: Die alte URL gibt einen 403-Fehler zurück.
Allgemeine Einstellungen
- Neue Produkte sofort aktiv — standardmäßig deaktiviert: Von Feeds erstellte Produkte sind Entwürfe, damit Sie sie vor der Veröffentlichung prüfen.
- Standardmarge — angewendet, wenn keine Regel passt.
- Log-Aufbewahrung — Anzahl der Tage bis zur automatischen Bereinigung.
- Cron-Token neu generieren.
Überwachung und Protokolle
Der Reiter Logs listet jeden Durchlauf mit dem betroffenen Feed, dem Modus, den Zählern (erstellt / aktualisiert / übersprungen / Fehler), der Ausführungszeit und den Details der ersten aufgetretenen Fehler auf. Die Protokolle werden gemäß der konfigurierten Aufbewahrung automatisch bereinigt.
Fehlerbehebung
„Feed file not found or outside shop directory“
Bei einer Dateiquelle muss der Pfad auf eine lesbare Datei im Shop-Verzeichnis zeigen. Verwenden Sie einen zum Root relativen Pfad oder eine URL.
Produkte werden erstellt, sind aber im Frontend unsichtbar
Das ist das Standardverhalten: Erstellte Produkte sind deaktiviert. Prüfen und aktivieren Sie sie, oder schalten Sie „Neue Produkte sofort aktiv“ in den Einstellungen ein.
Ein Lieferant überschreibt ein geteiltes Produkt nie
Seine Priorität ist wahrscheinlich schlechter (höhere Zahl) als die des besitzenden Lieferanten. Passen Sie die Prioritäten im Reiter Suppliers an.
Die Preise erscheinen zu hoch/niedrig
Prüfen Sie, ob der Feed Bruttokosten liefert (Option „Preise inkl. Steuer?“ + Steuersatz), und kontrollieren Sie über die Auflösungsreihenfolge, welche Margenregel tatsächlich angewendet wird.
Kompatibilität
- PrestaShop 8.0 bis 9.x, PHP 7.4 bis 8.3.
- Ohne Override des PrestaShop-Cores.
- Modul übersetzt in FR, EN, ES, DE, IT.