Jump to content
xt:Commerce Community Forum

Vorstellung einer offen dokumentierten XML Importschnittstelle für xt:c 3.x


pikee

Recommended Posts

Hallo,

sicherlich kennt Ihr das Problem, wenn Ihr Daten aus Fremdsystem in den xt:c Shop importieren wollt. xt:c bietet selbst nur das csv Format an, wozu ich selbst keine Dokumentation gesehen habe wie das csv aussehen soll. Aber csv ist heutzutage für Datenabgleiche unzureichend.

Daher habe ich eine Importschnittstelle auf XML entwickelt, die jederzeit problemlos erweitert werden kann.

Hier der Grundaufbau:

<?xml version="1.0" encoding="iso-8859-15"?>


<xtc>

    <product model=""

            ean=""

            quantity=""

            shippingtime=""

            price=""

            weight=""

            status=""

            tax_class_id=""

            product_template=""

            options_template=""

            manufacturers_id=""

            fsk18=""

            vpe=""

            vpe_status=""

            vpe_value="">


        <attribute model=""

                    stock=">"

                    options_id=">"

                    values_id=">"

                    price_prefix=""

                    price=""

                    weight_prefix=""

                    weight="" />


        <description language_id="">

            <name></name>

            <short_description></short_description>

            <description></description>

            <keywords></keywords>

            <meta_title></meta_title>

            <meta_description></meta_description>

            <meta_keywords></meta_keywords>

            <url></url>

        </description>


        <categories></categories>


        <image index="" thumb="" info="" popup=""></image>

        <image index="" thumb="" info="" popup=""></image>

    </product>

</xtc>

Die Markups attribute und image sind optional. image dient hierbei zum gleichzeitgen Einlesen und Verarbeiten von Produktbildern. Das Attribut index dient für die Reihenfolge der Bilder. Index 0 bezeichnet das Produktbild, während Index > 0 die zusätzlichen Produktbilder darstellt. thumb, info und popup sind optional. Werden diese Attribute benutzt, sind die Werte in breitexhöhe anzugeben (bsp: thumb="120x90"). Werden thumb, info, popup nicht angegeben, werden die Werte aus der Shopeinstellung bezogen.

categories ist auch optional und dient zum zuordnen der Produkte in die Kategorien. Ein Weglassen des Markup bewirkt, dass das Produkt in Kategorie 0 (root) abgelegt werden. Soll das Produkt in meheren Kategorien erscheinen, sind die IDs der Kategorien durch Komma getrennt anzugeben. (Bsp: <categories>1,5,9</categories>)

Ich erweitere heute noch das Markup categories um das Attribut type. Die type Angabe soll dazu dienen wie das Produkt in weiteren Kategorien angelegt werden soll. Hierzu gibt es die Möglichkeit:

create - hierbei wird das Produkt in allen angegeben Kategorien jeweils als eigenständiges Produkt angelegt

link - das Produkt wird in der ersten Kategorie angelegt und in die darauffolgenden Kategorien nur verlinkt.

*** Verstoß gegen Forenregeln ***

Link to comment
Share on other sites

wozu ich selbst keine Dokumentation gesehen habe wie das csv aussehen soll.

http://www.xt-commerce.com/forum/showthread.php?t=35245

<product model=""

ean=""

quantity=""

shippingtime=""

price=""

weight=""

status=""

tax_class_id=""

product_template=""

options_template=""

manufacturers_id=""

fsk18=""

vpe=""

vpe_status=""

vpe_value="">

diese art der kapselung ist für eine weite akzeptanz ungeeignet.

<product>

<products_model>...</products_model>

...

...

..

<attribute>

<attributes_model>...</attributes_model>

.....

</attribute>

<attribute>

<attributes_model>...</attributes_model>

.....

</attribute>

ist da wesentlich vernünftiger.

ps: in kürze gibt es eine XML importschnittstelle von uns, die auch BMEcat Format akzeptiert.

Link to comment
Share on other sites

  • 7 months later...

ps: in kürze gibt es eine XML importschnittstelle von uns, die auch BMEcat Format akzeptiert.

Wann kommt denn nun eine Importschnittstelle für BMEcat. Habe hier z.B. eine 120MB große XML Datei von BME 1.2. Wie soll ich da jetzt vorgehen. Muss ich das in CSV bringen und die Importschnittelle nehmen. Oder aber eigene SQL Anweisungen stricken.

-> Parsen, die Datentypen der DTD berücksichtigen für MySQL, dann per XSLT das ganze in SQL basteln?

Gibt es da nicht schon einen Weg oder ein Modul??? :confused:

Link to comment
Share on other sites

  • 2 weeks later...

Jetzt habe ich also wirklich die XML-Datei einzeln geparst um sie in die products Tabellen von xtcommerce zu bekommen.

Nun tut sich das nächste Problem auf. Die 38.000 Artikel werden jetzt bei "Neuer Artikel"-Liste mit aufgelistet. Wie kann ich das abschalten.

Die Konfiguration von xtcommerce gibt zwar dort eine Zahl vor, die ist aber bei weitem geringer.

Es ist so dass der Server 99% der cpu-time für mysql benötigt, die Seite lädt mind. 1-2 Minuten ehe etwas kommt. Da ist wohl eine Routine drin, die alle Artikel durchsucht, dass sollte mal optimiert oder entfernt werden.

Aber ich denke, das ich auch hier selbst Hand anlegen werden bzw. muss.

:mad:

:confused:

Link to comment
Share on other sites

Ich beschäftige mich ja nun seit 2 Jahren mit xt:commerce.

@rhermann69:

Das ist nur ein der vielen Fehler die der Shop macht. Bei denen vielen Artikeln ist es nur natürlich das Du ganz stark die Auswirkungen spürst.

Schau Dir am besten mal /includes/classes/split_page_results.php an.

Zudem solltest Du, sofern noch nicht gemacht, an wichtigen Schlüsselfeldern nen INDEX setzen. Das spart auch nochmal ne ganze Menge Zeit.

Der Shop hat einfach zu viele Fehler, als das wir ihn in Zukunft weiter anpassen an unsere Bedürfnisse und auch betreiben werden. Zudem ist er auch viel zu langsam im Ablauf.

Link to comment
Share on other sites

!!!Bitte lest diese Fehlermeldung!!!

Das Problem hatte sich richtig zugespitzt da zu den 38.000 Artikeln ja auch 7.000 Kategrorien existieren. Bin dahinter gekommen das in der

application_top.php die Funktion xtDBQuery liegt, wo ich mir mal eine komplette Ausgabe habe generieren lassen.

Was dabei rauskam war erschreckend. Es wurden, klar, alle Produkte nach jeweiliger Kategorie gezähtl. Ungefähr so:

ca. 37.000 querys (als Block wie er hier steht, ansonsten sind es ja über 74.000)

::select categories_id from categories where parent_id = '37537'

::select count(*) as total from products p, products_to_categories p2c where p.products_id = p2c.products_id and p.products_status = '1' and p2c.categories_id = '37538'

Irgendwie auch komisch, da es ja "nur" 7.000 Kategorien gibt, verwechselt man es mit der product.id. Klar so könnte man schon mal 30.000 querys einsparen. Das gibts doch wohl nicht.

Was aber noch interessant ist, ist die Tatsache, das an der Startseite wo sich mein Shop befindet, diese Art der Funktion "zähle die Produkte je Kategorie" überhaupt auch keinen Sinn macht. Wäre es nur an einer bestimmten Stelle, wäre dies evtl. verschmerzbar.

So, war nun ganz "brutal" und :) habe die Funktion xtc_count_products_in_category in der gleichnamigen Datei unter /inc/xtc_count_products_in_category.inc.php unschädlich gemacht, mit einem vorgezogenen return;.

Natürlich ist die Funktion ja für irgendwas nütze, für was genau, habe ich aber noch nicht herausbekommen. Erklärungsbedarf ist da angesagt.

Ich hätte nun gerne gewusst, da dies ein Open-Source-Projekt ist, ob dieser "Fehler" schon so aufgetreten ist, bzw. schon behoben ist. Und an welcher Stelle diese Funktion eigentlich aufgerufen wird, :D.

@pikee:

danke für deine Einschätzung und Erfahrungsbericht über xtcommerce. Interessant finde ich die Abkehr von diesem, bei mir ist es leider zu spät um nochmal umzusatteln. Bin mir aber sicher das xtcommerce nicht hier aufhören wird sich weiter zu entwicklen. :rolleyes:

PS: Welchen Shop nimmst Du jetzt für schnelle Reaktionen?

Link to comment
Share on other sites

Der Shop wird eine Eigenentwicklung. Ausgerichtet auf OOP, PHP5 only, starke MySQL Optimierung und direkte Schnittstelle zu unserer WaWi.

Werden zwar paar Monate dazu in´s Land gehen, aber dann haben wir nen Shop der 1:1 mit unserer WaWi arbeiten kann. Und die komplette Adminverwaltung lege ich auf einen Intranetserver. Wird leider nichts für die Allgemeinheit werden, da das Shopsystem auf unseren Firmenbedarf zugeschnitten sein wird.

Größten Probleme am xt:c (für uns) sind:

- Gutscheinsystem, was, seit wir xt:c einsetzen (Jan 2006), nicht korrekt funktioniert

- Attributsystem ist für uns so nicht wirklich verwendbar. Eine Artikelgruppierung wäre hier besser gewesen

Das sind so die Hauptknackpunkte.

Link to comment
Share on other sites

Das Problem mit der rekursiven Funktion bestand ja nun nicht mehr. Jetzt habe ich erfahren dass es eine Einstellmöglichkeit gibt, unter

Konfiguration-> Artikelanzahl hinter Kategorienamen?

false / true

diese war ob true oder false immer aktiv. D.h. die Funktion konnte garnicht abgeschaltet werden. Das lag an dem Ausdruck

if(SHOW_COUNTS == true)

in der templates\ebez_tpl_rn\source\inc\xtc_show_category.inc.php, der Funktion xtc_build_category_lists_using_ul.

Das Problem ist hier dass man Äpfel mit Birnen, in dem Fall, eine Konstante (einen String) mit Boolean vergleicht. Wobei die Bedingung immer erfüllt wurde.

Die Lösung für diese "Problem" (bei PHP 4) ist folgendes

if(SHOW_COUNTS == "true")

oder aber man übersetzt den String auch in einen Boolean. Dann reagiert auch wieder die Konfiguration von xtCommerce einwandfrei.

Trotzdem, die rekursive Funktion ist für 7.000 Kategorien und 38.000 Artikel einfach zu viel für einen durchschnittlichen Server.

@pikee:

Schade das eure Lösung nur "betriebsintern" ist. ;)

Link to comment
Share on other sites

  • 1 year later...

Hallo,

es gibt eine Dokumentation zu XTC für unterschieldiche XML-Formate. Unter anderem auch für Kundenexporte, wobei die Struktur in der Dokumentation abgebildet ist.

Meine Frage nun: Ist diese Struktur standardisiert, oder ist das XTC-Eigen? Darf dieses Format "kopiert", bzw. weiter benutzt werden - bspw. für einen eigenen Kundenwebservice?

Grüße

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...