PS PrestaShop Mittel

Lieferanten-Feed-Import & Dropshipping für PrestaShop 8 & 9

Multi-Lieferanten-Import (CSV, XML, JSON), Margen, Kombinationen und Bestandssynchronisierung installieren, konfigurieren und automatisieren.

Aktualisiert Modulversion 1.4.0

Ü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 Feeds in CSV, XML und JSON, wendet Ihre Margenregeln an, erzeugt Kombinationen, verknüpft Produkte untereinander, synchronisiert den Bestand per Cron und regelt doppelte EAN13-Codes über eine Priorität pro Lieferant.

Das Modul ersetzt nicht den nativen CSV-Import von PrestaShop: Es industrialisiert wiederkehrende Importe aus mehreren Quellen, mit automatischen Margen, Kombinationen und Synchronisierung.

Installation

  1. Gehen Sie im Backoffice zu Module > Modulmanager und dann Modul hochladen.
  2. Wählen Sie die Datei dfsupplierfeed.zip und bestätigen Sie.
  3. 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

  • Dashboard — Zähler und Hinweis auf Feeds, deren Import läuft.
  • Suppliers — Lieferanten und Prioritäten.
  • Feeds — Feeds, Analyse, Feldzuordnung und Optionen.
  • Margin rules — Regeln zur Berechnung der Verkaufspreise.
  • Logs — detaillierte Import-Historie.
  • Settings & Cron — allgemeine Einstellungen, große Kataloge, Cron-URLs.

Schritt 1 — Lieferanten anlegen

Fügen Sie im Reiter Suppliers einen Lieferanten hinzu mit Name, Priorität (Ganzzahl, 1 ist die höchste und entscheidet bei doppelten EAN13), Status aktiv und der Option Den nativen PrestaShop-Lieferanten erstellen, die auch den Einkaufspreis in product_supplier füllt.

Vergeben Sie die besten Prioritäten (niedrigste Zahlen) an Ihre zuverlässigsten oder günstigsten Lieferanten: Sie besitzen dann die geteilten Produkte.

Schritt 2 — Feed anlegen und analysieren lassen

Legen Sie im Reiter Feeds den Feed mit Lieferant, Quellentyp (entfernte URL oder lokale Datei im Shop-Verzeichnis) und Format an. Speichern Sie und klicken Sie dann auf die Lupe in der Feed-Zeile.

Das Modul lädt eine Stichprobe und zeigt den erkannten items_path, die Liste aller tatsächlich vorhandenen Felder mit Beispielwerten und eine vollständig vorausgefüllte Zuordnung, die vor dem Anwenden bearbeitbar ist.

Nummerierte Bildspalten werden automatisch gruppiert, gepackte Größenspalten, Farbspalten und Spalten mit verwandten Referenzen erkannt, und Spaltennamen in Deutsch, Englisch, Französisch, Spanisch und Italienisch identifiziert.

Prüfen Sie den Vorschlag immer vor dem Anwenden. Viele Lieferanten liefern eine Preisempfehlung, wo das Modul einen Einkaufspreis erwartet.

Schritt 3 — Die Feldzuordnung

Die Zuordnung ist ein JSON-Objekt, das die Spalten oder Knoten des Feeds mit normalisierten Feldern verbindet. Die 21 kanonischen Felder sind:

name reference ean13 mpn cost quantity description description_short category manufacturer weight tax_rate image images group_reference attributes variants_stock variants_ean variants_reference variant_attribute related

Nur reference oder ean13 ist Pflicht: Das sind die beiden Abgleichschlüssel.

Mehrere Quellen für ein Feld

Der Wert eines Feldes darf eine Liste sein. Ein Lieferant, der seine Fotos auf mehrere Spalten verteilt, wird so zugeordnet:

{
  "fields": {
    "reference": "id",
    "name": "name",
    "cost": "wholesale_price",
    "images": ["image_1", "image_2", "image_3", "image_4"]
  }
}

Beim Feld images wird jede gefüllte Spalte importiert. Bei jedem anderen Feld wird der erste nicht leere Wert genommen, womit sich eine Fallback-Kette schreiben lässt.

CSV

Verknüpfen Sie jedes Feld mit einer Spaltenüberschrift oder mit einem Spaltenindex ab 0. Das Trennzeichen wird automatisch erkannt, mehrzeilige Felder in Anführungszeichen werden verarbeitet.

{
  "fields": {
    "name": "product_name",
    "reference": "sku",
    "ean13": "ean",
    "cost": "price",
    "quantity": "stock",
    "category": "category",
    "image": "image_url"
  }
}

Eine Zeile, deren Spaltenzahl nicht zur Kopfzeile passt, wird abgewiesen und als Fehler gezählt. Ohne diese Prüfung wären alle folgenden Werte verschoben und würden stillschweigend importiert.

XML

items_path zeigt auf den wiederholten Knoten, in beliebiger Tiefe. Feldpfade sind relativ zu diesem Knoten, @name liest ein Attribut.

{
  "items_path": "products/product",
  "fields": {
    "reference": "@sku",
    "name": "title",
    "ean13": "ean",
    "cost": "pricing/wholesale",
    "quantity": "stock/quantity",
    "image": "images/image"
  }
}

Da die Pfade relativ zum Artikel sind, kann ein Wert auf einem übergeordneten Knoten nicht gelesen werden: Es gibt keine ..-Navigation.

JSON

items_path nutzt Punktnotation bis zum Artikel-Array. Ein numerisches Segment liest einen Array-Eintrag: images.0 ist das erste Bild.

{
  "items_path": "data.products",
  "fields": {
    "reference": "sku",
    "name": "name",
    "ean13": "barcode",
    "cost": "prices.cost",
    "quantity": "inventory.available",
    "image": "images.0"
  }
}

Der Reiter Feeds enthält sechzehn kommentierte Beispiele.

Schritt 4 — Margen festlegen

Im Reiter Margin rules berechnet jede Regel den Nettoverkaufspreis aus dem Nettoeinkaufspreis: Prozent (Kosten × (1 + Wert/100)), Koeffizient (Kosten × Wert) oder fester Zuschlag (Kosten + Wert). Anschließend wird eine optionale psychologische Rundung angewendet.

Geltungsbereich und Auflösung

Eine Regel kann auf einen Lieferanten, eine Kategorie, beide zielen oder global sein. Die spezifischste gewinnt, in dieser Reihenfolge: Lieferant + Kategorie, nur Lieferant, nur Kategorie, globale Regel. Kategorieregeln gelten auch für Unterkategorien. Ohne Regel wird die Standardmarge verwendet.

Die EAN-Priorität zwischen Quellen

Erscheint dieselbe ean13 in mehreren Feeds, besitzt der Lieferant mit der besten Priorität das Produkt, andere Quellen werden für diese Referenz übersprungen, und ein später auftretender besser priorisierter Lieferant übernimmt automatisch.

Kombinationen

Zwei Feed-Strukturen werden unterstützt.

Eine Zeile je Variante

Aktivieren Sie Kombinationen erzeugen und ordnen Sie group_reference (identisch für alle Varianten eines Produkts) und attributes (die Optionen, zum Beispiel Größe:M|Farbe:Rot) zu. Zwischen den Paaren sind |, , und ; erlaubt, zwischen Name und Wert : oder =.

Eine Zeile je Produkt, Größen in einer Spalte gepackt

Das ist die verbreitetste Struktur bei Textil- und Dessous-Großhändlern:

sizes_stock : EU 70C | FR 85C:4,EU 70D | FR 85D:2,EU 75A | FR 90A:1
ean_codes   : EU 70C | FR 85C:5901741925360,EU 70D | FR 85D:5901741925377

Aktivieren Sie Gepackte Varianten aufteilen und ordnen Sie variants_stock zu, dazu variants_ean und variants_reference, falls der Feed sie liefert. Das Modul zerlegt die Zeile in eine Kombination je Größe und ordnet Bestand, EAN und Referenz über das Label zu. Drei Einstellungen begleiten das Kästchen: der Name der Attributgruppe (standardmäßig Taille), das Trennzeichen zwischen Einträgen (,) und das Trennzeichen zwischen Label und Wert (:).

Die Trennung erfolgt an der letzten Fundstelle des Trennzeichens, sodass ein Label wie EU 70C | FR 85C lesbar bleibt.

Setzen Sie das Häkchen vor dem ersten Import. Importieren Sie zuerst ohne, werden die Produkte ohne group_reference angelegt: Wird die Aufteilung danach aktiviert, findet das Modul diese Elternprodukte nicht und legt neue an, was Ihren Katalog verdoppelt.

Eine zweite Achse aus einer Feed-Spalte

Viele Lieferanten senden die Farbe in einer eigenen Spalte, während die Größen gepackt sind. Ordnen Sie variant_attribute dieser Spalte zu:

{
  "fields": {
    "reference": "id",
    "name": "name",
    "cost": "wholesale_price",
    "variant_attribute": "color",
    "variants_stock": "sizes_stock",
    "variants_ean": "ean_codes"
  }
}

Jede Kombination des Produkts erhält dann eine zweite Achse, unter der auf dem Feed festgelegten Attributgruppe für die zusätzliche Spalte (standardmäßig Couleur). Sie erhalten Größen- und Farbkombinationen, nutzbar für Filter.

Da jede Feed-Zeile ein Produkt in einer einzigen Farbe ist, hält die Farbgruppe nur einen Wert je Produkt. Farbvarianten werden nicht zu einer Seite mit Farbauswahl zusammengeführt: Zur Navigation dienen die verwandten Produkte weiter unten.

Verwandte Produkte

Listet der Feed die anderen Farbvarianten oder die zugehörigen Modelle in einer Referenzspalte, aktivieren Sie Verwandte Produkte importieren und ordnen related zu:

{
  "fields": {
    "reference": "id",
    "related": "other_colors"
  }
}

Die Spalte enthält eine kommagetrennte Liste von Lieferantenreferenzen. Die Verknüpfungen entstehen als PrestaShop-Zubehör und erscheinen im Block für verwandte Produkte Ihres Themes.

Die Auflösung erfolgt, sobald der Feed vollständig gelesen wurde, denn eine Referenz zeigt sehr oft auf ein später in der Datei stehendes Produkt. Drei Verhaltensweisen:

  • eine Referenz auf das Produkt selbst wird übersprungen, was häufig vorkommt, da viele Lieferanten die ganze Gruppe bei jedem Mitglied auflisten;
  • eine Referenz auf ein im Feed fehlendes Produkt wird ohne Fehlerzählung übersprungen: bei einem nach Kategorie gefilterten Export betrifft das routinemäßig ein Fünftel der Referenzen;
  • bestehendes Zubehör wird nie gelöscht, von Hand gesetzte Verknüpfungen überstehen den Import. Im Gegenzug bleibt eine vom Lieferanten geänderte Gruppierung als alte Verknüpfung bestehen.

Die Zahl der erstellten Verknüpfungen erscheint in der Abschlussmeldung und in einer eigenen Protokollspalte.

Was der Feed überschreiben darf

Fünf Kontrollkästchen pro Feed legen fest, welche Felder synchronisiert werden: Preise, Bestand, Name, Beschreibungen, Bilder. Standardmäßig sind nur Preise und Bestand aktiviert.

Wenn Sie die Produktseiten für die Suchmaschinen überarbeiten, deaktivieren Sie Name und Beschreibungen nach dem ersten Import.

Aus dem Lieferantenkatalog entfernte Produkte

Jeder Feed wählt sein Verhalten: unverändert lassen, Bestand auf null setzen, deaktivieren oder beides. Die Aktion läuft am Ende eines abgeschlossenen Vollimports und nur für Produkte dieses Feeds.

Im Dropshipping ist „Bestand auf null“ die sicherste Wahl: Das Produkt ist nicht mehr verkäuflich, behält aber URL und Ranking.

Kategorien und Währungen

Das Feld category akzeptiert einen einfachen Namen oder einen vollständigen Pfad, zum Beispiel Start > Büro > Stühle. Das Trennzeichen ist pro Feed konfigurierbar, und die Option Fehlende Kategorien anlegen erstellt die fehlenden Ebenen.

Rechnet der Lieferant in einer anderen Währung ab, wählen Sie sie auf dem Feed: Die Kosten werden vor Anwendung der Margen umgerechnet.

Große Kataloge

Feeds werden im Streaming gelesen: Der Speicherbedarf hängt nicht von der Dateigröße ab. Die Verarbeitung wird in fortsetzbare Stapel geteilt. Zwei Einstellungen: Sicherungspunkt alle N Artikel (Standard 2000) und Zeitbudget pro Durchlauf (Standard 120 s).

Die Aufteilung vervielfacht das Volumen: Ein Feed mit 7.300 Variantenprodukten erzeugt über 33.000 Kombinationen, also rund 41.000 Objekte beim ersten Vollimport. Planen Sie mehrere Durchläufe und testen Sie auf einem Testshop.

Import manuell starten

  • 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.

Aus dem Backoffice ist ein Durchlauf auf 45 Sekunden begrenzt.

Mit Cron automatisieren

# Stündliche Bestandssync
0 * * * * curl -sL "https://ihrshop.tld/index.php?fc=module&module=dfsupplierfeed&controller=cron&token=IHR_TOKEN&mode=stock" > /dev/null

# Nächtlicher Vollimport
30 3 * * * curl -sL "https://ihrshop.tld/index.php?fc=module&module=dfsupplierfeed&controller=cron&token=IHR_TOKEN&mode=full" > /dev/null

Optionale Parameter: &id_feed=N und &budget=600.

Wenn Sie das Token neu generieren, aktualisieren Sie Ihre Cron-Jobs: Die alte URL gibt einen 403-Fehler zurück.

Allgemeine Einstellungen

  • Neue Produkte sofort aktiv — standardmäßig deaktiviert.
  • Produkte ohne Lieferantenbestand deaktivieren, mit Reaktivierung bei Rückkehr des Bestands.
  • Standardmarge, wenn keine Regel passt.
  • Log-Aufbewahrung und automatische Bereinigung.
  • Bei der Deinstallation — Daten löschen oder alles behalten.
  • Feed-Cache und Cursor leeren im Wartungsbereich.

Überwachung und Protokolle

Der Reiter Logs listet jeden Durchlauf: Feed, Modus, verarbeitete, erstellte, aktualisierte, übersprungene, fehlerhafte und fehlende Artikel, erstellte Produktverknüpfungen, Abschlusskennzeichen mit Wiederaufnahmepunkt, Laufzeit und Details der ersten Fehler.

Fehlerbehebung

„Malformed CSV row: 23 columns instead of 22″

Die Zeile enthält ein nicht maskiertes Trennzeichen oder Anführungszeichen in einem Textfeld. Sie wird abgewiesen.

„Feed file not found or outside shop directory“

Bei einer Dateiquelle muss der Pfad auf eine lesbare Datei im Shop-Verzeichnis zeigen.

Die Analyse findet keine Artikel

Tragen Sie items_path manuell ein und starten Sie die Analyse erneut.

Produkte werden erstellt, sind aber im Frontend unsichtbar

Das ist das Standardverhalten: Erstellte Produkte sind deaktiviert.

Kombinationen werden nicht erstellt

Prüfen Sie, ob das passende Kästchen aktiv ist, ob die nötigen Felder zugeordnet sind und ob die Trennzeichen zur Datei passen.

Mein Katalog hat sich nach dem Aktivieren der Aufteilung verdoppelt

Der Import lief, bevor das Kästchen gesetzt war. Löschen Sie die von diesem Feed erstellten Produkte, leeren Sie die Cursor und starten Sie erneut.

Wenige oder keine verwandten Produkte erstellt

Die Verknüpfungen werden erst am Ende eines abgeschlossenen Vollimports aufgelöst: Bei einem großen Feed mit mehreren Durchläufen erscheinen sie im letzten. Prüfen Sie außerdem, ob die Referenzen der Spalte zum auf reference gemappten Feld passen.

Die Preise wirken zu hoch oder zu niedrig

Prüfen Sie Bruttokosten, Währung, die greifende Margenregel und ob das auf cost gemappte Feld wirklich ein Einkaufspreis ist.

Der Import wird nie fertig

Bei einem sehr großen Feed ist das normal: Er schreitet in Durchläufen voran.

Kompatibilität

  • PrestaShop 8.0 bis 9.x, PHP 7.4 bis 8.3.
  • Ohne Override des PrestaShop-Cores.
  • Multishop: Erstellte Produkte werden den Shops des Kontexts zugeordnet.
  • Oberfläche auf Englisch und Französisch übersetzt.
War diese Seite hilfreich?

Immer noch nicht weiter? Support kontaktieren