Importer doppelt Kategorien

Tach auch.

Szenario:
Importer von D3
ca. 8.000 Artikel
ca. 2,5 Bilder je Artikel im Schnitt (über 19.000 Pix)
2 Kategoriespalten (Hauptkategorie | Unterkategorie)

Vorgehensweise:
Aufteilung in 3 Importdateien: 2 x 3.500 Artikel (ca. 8 MB) 1 x Rest
Import der ersten 3.500 Artikel
Sortierung der Kategorien (1000 | 1100 | 1200 | 1300 | 2000 | 2100 | 2200 etc.) so daß 8 Hauptkategorien mit je einigen Unterkategorien bestehen.
Import der zweiten 3.500 Artikel

Problem:
ALLE Kategorien bestehen jetzt einmal mit Sortierung wie angelegt und einmal mit Sortierung 9999…

        Beispielhaft: 

http://www.profiparty.de Dort unter “Audio” ist “Boxensysteme” zu finden. Unter “Mehr” sind diese noch einmal gelistet.

Was hab ich falsch eingestellt? Jemand eine Idee?

So hab alle Produkte noch einmal rausgeschmissen durch den Import einer leeren Preisliste und anschließendem Löschen aller Produkte beim Nachimport. In diesen vermeintlich leeren Shop noch einmal die ersten 3.000 Artikel importiert.

Alle vorab erstellten Kategorie-Sortierungen (wie oben beschrieben 1000 | 1100 etc.) sind im Backend vorhanden. Aber: Die Hauptkategorien 1000 | 2000 | 3000 haben Artikel. Die Unterkategorien 1100 | 2100 | 3100 etc. gibt es jeweils noch einmal mit der gleichen Bezeichnung aber 9999er Sortierung als Hauptkategorie und nur die Hauptkategorien haben zugewiesene Artikel…

Was nun tun, sprach das Huhn…

Ich kann tun was ich will, sobald ich eine Kategorie zur Unterkategorie mache, legt der Shop sie beim nächsten Import neu an. Auch wenn die Kategorie die Sortierung 9999 behält, existiert sie nach dem Import zwei mal. Halt einmal als Haupt- und einmal als Unterkategorie…

Das hab ich nun in den FAQ von D3 gefunden:

Wie werden Artikel in Kategorien bzw. Unterkategorien importiert?

Prinzipiell können Artikel in beliebig viele Kategorien importiert werden. Einstellbar im Reiter “Kategorien” des Moduls.
Im Menü “Kategoriefeld Zuordung” legen Sie fest in welcher Art die Kategoriezuordnung in derCSV erfolgt. Zwei Szenarien nicht möglich:

Szenario 1
In der Importspalte der CSV ist der Name der Kategorie hinterlegt.

Im Feld “Kategoriefeld Zuordung” muß der Wert “oxtitle” ausgewählt werden.
Hierbei wird nach einer Kategorie mit exakt (!) diesem Namen im Shop gesucht. Wird keine Katgegorie gefunden, wird diese angelegt und der Artikel ihr zugeordnet.
Die Such nach dem Katgegorienamen erfolgt jedoch immer nur pro Kategorieeben. Lautet der Kategoriename bspw. “Bekleidung”, so wird ausschließlich bei den Hauptkategorien nach diesem Namen gesucht. Der Grund ist, das viele Shops identische Kategorienamen in verschiedenen Kategoriebäumen haben.
[COLOR=“Red”] Soll ein Artikel in eine Unterkategorie importiert werden, so muß der komplette Baum von der Hauptkategorie weg angegeben werden. z.B. “Bekleidung/T-Shirts/Herren”. Der Artikel wird also der Kategorie “Herren” in dritter Ebene unter “Bekleidung” und “T-Shirts” zugeordnet.Als interne Spaltentrennung wird hier ein “/” genutzt. Es kann auch jedes andere Zeichen sein, dasjedoch nicht innerhalb der Spalte als normaler Text vorhanden seindarf. Auch darf es nicht mit dem CSV-Spaltentrenner der gesamten Datei identisch sein.
Soll der Artikel einer weiteren Unterkategorie in einem anderen Baum zugeordnet werden, so muß der “Pfad” in einer weiteren CSV-Spalte hinterlegt sein.

Szenario 2:
In der Importspalte der CSV ist eine andere Identifikation als der Name für die Kategorie hinterlegt.

Ein mögliches Beispiel für dieses Szenario ist ein eigenes Nummernsystem, das jede Kategorie identifiziert. z.B. 1000, 2000, 3000 für Hauptkategorien. 1010, 1020, 1030 für Unterkategorien der Hauptkategorie 1000 usw.
Im Feld “Kategoriefeld Zuordung” muß dann das Datenbankfeld angegeben werden, das diese Identifikation bei den Kategorien beinhaltet.
In dem Fall gibt es zwei wichtige Unterschiede zum Szenario 1. Zum einen wird kein “Pfad” zur gewünschten Kategorie angegeben, sondern es wird direkt der Wert angegeben (Dazu muß die Identifikation über alle Kategorien hinweg eindeutig sein) Zum zweiten wird keine neue Kategorie angelegt, wenn der Wert der Identifikation nicht keiner Kategorie gefunden wird. (Sonst würde jedesmal eine Kategorie ohne Namen erstellt werden) Die Kategoriezuordnung wird dann für den Artikel übersprungen.[/COLOR]

Das heist, alle Einstellungen, die ich im Shop vornehme (bezüglich Sortierung der Kategorien) sind beim nächsten Import wieder vergessen, da ich die Sortierung nicht vorab in der CSV-Datei einstellen kann. Diese bekomme ich ja vom Lieferanten und sie beinhaltet über 8000 Artikel…

Hat vielleicht jemand eine Idee wie ich den Importer dazu überreden kann, die Einstellungen zu übernehmen?

So wie ich das verstehe, kannst du doch deine gewünschte Kategorienstruktur und Sortierung anlegen und dann beim Import angeben, in welche Kategorien die Artikel importiert werden sollen.

Du lässt von dem Import-Tool doch anscheinend immer die komplette Kategorienstruktur neulegen oder nicht? Das dann deine Sortierung weg ist, ist klar.

Jetzt ist nur noch die Fragen wieviele Arbeit es ist, die Artikel den einzelnen Katergoren zuzuordnen.

Zur Not könnte man auch überlegen, sich einen sql-Befehl zu stricken, der das nach dem erfolgten Import jedesmal gerade zieht.

Hallo Ralf,

ich wollte gerade den Link zu diesem FAQ-Thema hier posten, aber offensichtlich hast du es bereits gefunden. Für interessierte Mitleser: http://faq.oxidmodule.com/Fragen-zu-speziellen-Modulen/Importer/Wie-werden-Artikel-in-Kategorien-bzw-Unterkategorien-importiert.html

Dein Problem ist:
Du hast die Kategorien importiert, um sie danach manuell innerhalb des Baumes zu verschieben.
Nun fehlt dem Importmodul natürlich jeglicher Zusammenhang zwischen den Daten aus der CSV und den Bestandsdaten im Shop.
Weder Szenario 1, noch Szenario 2 sind für einen Import anwendbar.
Eigentlich stellt sich für mich die prinzipielle Frage, warum du nach dem Erstimport überhaupt nochmal die Kategorien importierst, die ja bereits vorhanden sind, aber von Dir “customized” wurden. Bei Folgeimporten brauchst du doch einfach im Reiter “Kategorien” des Importprofils keine Einstellungen machen und der Kategoriebaum bleibt unberührt. Dann hast du auch keine doppelt angelegten Kategorien.
Das ist dann auf jeden Fall die Lösung für Aktualisierungen (Update) von Bestandsartikeln.

Sind neue Artikel in der Importdatei, können diese dann natürlich nicht den vorhandenen Kategorien zugeordnet werden. Wie auch? Es fehlt ja jegliche Referenz zwischen den Daten der CSV und den verschobenen Kategorien im Shop. Oder siehst du eine? :slight_smile:
Diese neuen Artikel müßten dann manuell den Bestandskategorien zugeordnet werden, da du ja die CSV nicht an den neuen Stand im Shop anpassen kannst/willst.

Um es deutlich zu machen: Woher soll der Importer wissen, das Kategorie X die z.B. vorher eine Hauptkategorie war, nun plötzlich eine Unterkategorie von Hauptkategorie Y ist? Allein der Name ist dazu nicht ausreichend. Wir haben viele Shops, die gleichleutende Kategorienamen in unterschiedlichen “Ästen” des Kategoriebaumes haben. Das wäre nicht eindeutig.

Die generelle Lösung dafür ist eigentlich unser “Szenario 2” in der FAQ. Durch eine eindeutige Nummer (z.B. im Feld “Sortierung”) ist es dem Importer egal, wo sich die Kategorie innerhalb des Baums befindet. Er sucht nach einer Kategorie mit dieser Nummer, findet sie, und ordnet den Artikel zu. Es ist klar, das diese Nummer natürlich in der CSV vorhanden sein muß. Aber wie sollten wir das sonst lösen?

Ps: Da du parallel an uns in den Support gemailt und hier im Forum gepostet hast, habe ich im Forum geantwortet, sonst kommt für andere der Eindruck auf wir würden uns dem Problem nicht widmen.


Thomas Dartsch

Danke Thomas, für die ausführliche Hilfe! :slight_smile:

Es gibt zwei Lösungsansätze: Für den ersten hat Thomas mir einen Codeschnipsel geschickt, mit dem ich ein DB-Feld in den Importer implementieren kann welches als neues Zuordnungsfeld dient.Dieses muss dann vor jedem Update via CSV-Befehl gesetzt und im Importer als Zuordnung eingestellt werden.

Der zweite ist die Anpassung der Preisliste via openOffice calc Funktionen.

Ich habe mich für den zweiten entschieden, da dieser erstens unkomplizierter :wink: und zweitens so gesichert ist, dass neue Kategorien präsent sind nachdem eine neue Preisliste eingelesen wird.