product_getList

Methode zum Abrufen einer Produktliste.

Datenfelder

Informationen zu den Datenfelder eines Produktes finden Sie unter: Daten-Typ "Produkt" sowie unter: Daten-Typ "Produkt-Preis".

Schema

Parameter - Array

$Params Pflicht Beschreibung Beispiel
[fields] optional

String/Array (faster). Liste der Fields, die returned werden sollen. Wird nichts angegeben wird "*" angenommen, d.h. alle im Model hinterlegten Felder.

Es sollten nur die Felder angegeben werden, die auch wirklich benötigt werden. Speziell bei Multi-Table-Models werden dann auch nur die Tables im SELECT dazu geJOINed, die benötigt werden.

Als String: "pcode,name,desc_short".

Als Array:
  [0] = "pcode"
 [1] = "name"
 [2] = "desc_short"

[filter][<field>] optional

mixed. Pro Field kann hier ein Wert angegeben werden, der dann im WHERE-Statement aufgenommen wird. Im Falle eines virtuellen Fields, wird das in "drvd_select" hinterlegte SQL in das WHERE-Statement mit aufgenommen.

Es wird immer mit "<field> = '<auto-escaped Value>' " gesucht. Mehrere Filter-Felder werden mit AND verknüpft. Die übergebenen Werte werden automatisch escaped (Schutz vor SQL-Injection).

Ist ein Wert null, so wird mit "...<field> IS NULL" im WHERE gesucht.

Hiermit können einfache, SQL-Injection-sichere Filterkriterien realisiert werden. Für komplexere WHERE-Statements bitte [xwhere] benutzen!

MySQL-wildcard-Filter "%" können hier aktuell leider nicht verwendet werden, da auch bei Text-Feldern mit "=" geprüft wird und nicht mit SQL LIKE.

['pcode'] ="ABC"
[filter][<field>][search] optional String. Pro Field kann hier ein Suchbegriff angegeben werden, der Field-Typ-spezifisch (INT, FLOAT, TEXT, DATE, DATETIME) interpretiert wird.
Wird diese Option genutzt kann natürlich nicht zuvor genannte [filter][<field>]-Abfrage für dieses Feld genutzt werden.
Text: "my_* || ecms_* || *.class.*"
Integer: ">10; <100"
Float: Integer: ">0.5; <=9.999"
Date: "1.12.2012 - 24.12.2012"
DateTime: "> 15.12.2012 12:00"
 
[filter][<field>][in] optional Array. Pro Field kann hier eine Liste von Begriffen angegeben werden, nach denen als mögliche exakte Werte des entsprechenden Feldes gesucht werden soll.
Wird diese Option genutzt kann natürlich nicht zuvor genannte [filter][<field>]-Abfrage für dieses Feld genutzt werden.
['lastname'] = array("e-matters","demo")
[filter][<field>][range] optional Array. Pro Field kann hier ein min-max Bereich angegeben werden, der Field-Typ-spezifisch (INT, FLOAT, TEXT, DATE) interpretiert wird.
Es können hierbei wahlweise "min" und "max" oder auch nur einer der beiden Werte angegeben werden
Wird diese Option genutzt kann natürlich nicht zuvor genannte [filter][<field>]-Abfrage für dieses Feld genutzt werden.
Text: array("min" => "A000100","max" => "A000200")
Integer: array("min" => "100","max" => "200")
Float: array("min" => "100,50","max" => "200.30")
Date: array("min" => "24.12.2014","max" => "2014-12-31")
 
[sql][limit][max] optional Integer. Die maxinale Treffer-Anzahl aus der Ergebnis-Menge.

30 - Returned die maximal ersten 30 Zeilen.

100 - Returned die maximal ersten 100 Zeilen

[sql][limit][page] optional Integer. Die aktuelle Ergebnis-Seite aus einer durch "[sql][limit][max]" unterteilten Ergebnis-Menge. Der "page" Parameter beginnt mit "1". Der "[sql][limit][max]" Parameter kann ohne "page" Parameter verwendet werden.

1 - Returned die erste Seite des Abfrage-Ergebnisses.

3 - Returned die dritte Seite des Abfrage-Ergebnisses.

[sql][order] optional

String. ORDER BY-Statement

"name DESC"
[sql][group] optional

String. GROUP BY-Statement

"xc__id"

Return - ​Array

Array-Key Typ Beschreibung
[status] boolean

TRUE: Wenn die Datenabfrage durchgeführt werden konnte.

FALSE: Wenn es bei der Ausführung einen Fehler gab.

[msg][<n>][type|text] string

Message-Stack

Ein optionales Array, um Message-Strings zur Ausgabe in der GUI und Message-Codes zurückzugeben. Vor allem bei Ausführungsfehlern ( [status]=FALSE) sollte hier etwas zurückgegeben werden.

Numerisches Array (mit n von 0 bis N). Es können prinzipiell beliebig viele Messages zurückgegeben werden.
Pro Message können jeweils optional [type] und [text] zurückgegeben werden.

[ type] ist typischerweise einer der folgenden Werte:

  • "ERROR" - Schwerer Ausführungsfehler.
  • "WARNING" - Warnung bei Ausführung.
  • "INFO" - Zusätzliche (Debug) Meldungen.
  • "OK" - Ausführung OK.
[data][<n>][<fields>] mixed

Die eigentlichen Daten als 2-dimensionales Array.

Die erste Array-Ebene ( <n>, von 0 bis N) nummeriert typischerweise die zurückgelieferten Datensätze durch.
In der zweiten Array-Ebene befinden sich jeweils die Daten der angeforderten Datensätze in einem assoziativen Array.

Beispiele

Nachfolgend ein paar Beispiele zur Nutzung der API Ressource product_getList.

a) Liste aller Produkte in der Kategorie "Frauen"

Es sollen alle Produkte aus der Kategorie "Frauen" zurückgeliefert werden. Dafür ist es nötig den zugehörigen Kategoriecode zu kennen. Dieser ist in unserem Beispiel "cat_women".

  1.  
  2. /*
  3.  * Beispielaufruf des API-URL-Calls für die zu übergebenen Parameter
  4.  * - die Filterung auf die Kategorie "Frauen" ist über den Kategoriecode (node_code) möglich.
  5.  */
  6. <your_api_url>&resource=product_getList&params[filter][node_code]='cat_women'

Das Result der Abfrage ist ein JSON String.

  1.  
  2. /*
  3.  * Beispiel-JSON für das Result der Abfrage im Erfolgsfall
  4.  */
  5. {
  6.   "status" : true,
  7.   "msg" : null,
  8.   "data" : {
  9.      0 : {
  10.        "pcode" : "T00001-XS", // Artikelnummer
  11.        "name" : "T-Shirt mit Logo", // Name des Produktes
  12.        "description" : "Dieses T-Shirt passt perfekt zu Dir", // Beschreibungstext des Produktes, kann HTML enthalten
  13.        "desc_short" : "100% Baumwolle - Perfekte Passform", // Kurzbeschreibungstext des Produktes, kann HTML enthalten
  14.        "price" : 19.95, // normaler Brutto-Preis
  15.        "discount" : 14.97, // Brutto Discount-Preis
  16.        "ecs_price_brutto" : 14.97, // dynamisches Feld: aktuell gültiger Preis, mit Discount-Preis gefüllt, wenn dieser gültig ist, ansonsten normaler Brutto-Preis
  17.        "ecs_uvp_brutto" : 19.95, // dynamisches Feld: normaler Brutto-Preis des Produktes, ist nur gefüllt wenn ein Discount-Preis gesetzt wurde. Ansonsten "false"
  18.        "ecs_discount_pct" : 25.00, // dynamisches Feld: Discount-Prozente, nur gefüllt wenn ein Discount-Preis gesetzt wurde.
  19.        "ean" : 1129837473843, // EAN/GTIN des Produktes
  20.        "files_img" : {
  21.            0 : {
  22.                "mb_label" : "productbild_t00001-xs", // Mediabase-Label des Produktbildes
  23.                "mb_title" : "Super T-Shirt mit Logo", // Titel des Bildes in der Mediabase, kann z.B. als ALT-Attribut verwendet werden
  24.                "mb_caption" : null, // möglicher Untertitel zu einem Bild
  25.                "mb_path" : "\path\to\image", // Pfad zum Bild
  26.                [...] // weitere Mediabase-Daten
  27.            },
  28.             <n> : {...} // Daten zu weiteren Bildern
  29.        },
  30.        {...} // alle weiteren Felder aus dem Daten-Typ "Produkt" sowie "Produkt-Preis" (siehe oben)
  31.      },
  32.      1 : {
  33.        "pcode" : "P00347-3784",
  34.        "name" : "Sweatshirt Albatros",
  35.        "description" : "Tolles Sweatshirt mit einem Albatros",
  36.        "desc_short" : "100% Baumwolle - Perfekte Passform",
  37.        "price" : 19.95,
  38.        "discount" : null,
  39.        "ecs_price_brutto" : 19.95,
  40.        "ecs_uvp_brutto" : false,
  41.        "ecs_discount_pct" : false,
  42.        "ean" : 892983749043,
  43.        "files_img" : {
  44.            0 : {
  45.                "mb_label" : "productbild_p00347",
  46.                "mb_title" : "Albatros Shirt",
  47.                "mb_caption" : "sehr bequemt", 
  48.                "mb_path" : "\path\to\image",
  49.                [...] // weitere Mediabase-Daten
  50.            },
  51.             <n> : {...} // Daten zu weiteren Bildern
  52.        },
  53.        {...} // alle weiteren Felder aus dem Daten-Typ "Produkt" sowie "Produkt-Preis" (siehe oben)
  54.      },
  55.      <n> : {...} // weitere Ergebnis-Arrays je nach Result-Menge
  56.   }
  57. }

 

b) Liste aller Produkte in bestimmten Preisbereich

Es sollen alle Produkte zurückgeliefert werden, die zwischen 20,- und 100,- EUR kosten.

  1.  
  2. /*
  3.  * Beispielarray des API-URL-Calls für die zu übergebenen Parameter
  4.  * - die Preisspanne kann über einen Range-Filter definiert werden
  5.  */
  6. <your_api_url>&resource=product_getList&params[filter][price][range][min]=20&params[filter][price][range][max]=100

Das Result der Abfrage ist eine Liste der abgefragten Bestellungen als Array.

  1.  
  2. /*
  3.  * Beispiel-JSON für das Result der Abfrage im Erfolgsfall
  4.  */
  5. {
  6.   "status" : true,
  7.   "msg" : null,
  8.   "data" : {
  9.      0 : {
  10.        "pcode" : "T00002-L", // Artikelnummer
  11.        "name" : "T-Shirt mit Logo", // Name des Produktes
  12.        "description" : "Dieses T-Shirt passt perfekt zu Dir", // Beschreibungstext des Produktes, kann HTML enthalten
  13.        "desc_short" : "100% Baumwolle - Perfekte Passform", // Kurzbeschreibungstext des Produktes, kann HTML enthalten
  14.        "price" : 29.95, // normaler Brutto-Preis
  15.        "discount" : 24.95, // Brutto Discount-Preis
  16.        "ecs_price_brutto" : 24.95, // dynamisches Feld: aktuell gültiger Preis, mit Discount-Preis gefüllt, wenn dieser gültig ist, ansonsten normaler Brutto-Preis
  17.        "ecs_uvp_brutto" : 29.95, // dynamisches Feld: normaler Brutto-Preis des Produktes, ist nur gefüllt wenn ein Discount-Preis gesetzt wurde. Ansonsten "false"
  18.        "ecs_discount_pct" : 16.00, // dynamisches Feld: Discount-Prozente, nur gefüllt wenn ein Discount-Preis gesetzt wurde.
  19.        "ean" : 1129837473844, // EAN/GTIN des Produktes
  20.        "files_img" : {
  21.            0 : {
  22.                "mb_label" : "productbild_t00002-l", // Mediabase-Label des Produktbildes
  23.                "mb_title" : "Super T-Shirt mit Logo", // Titel des Bildes in der Mediabase, kann z.B. als ALT-Attribut verwendet werden
  24.                "mb_caption" : null, // möglicher Untertitel zu einem Bild
  25.                "mb_path" : "\path\to\image", // Pfad zum Bild
  26.                [...] // weitere Mediabase-Daten
  27.            },
  28.             <n> : {...} // Daten zu weiteren Bildern
  29.        },
  30.        {...} // alle weiteren Felder aus dem Daten-Typ "Produkt" sowie "Produkt-Preis" (siehe oben)
  31.      },
  32.      1 : {
  33.        "pcode" : "M003982",
  34.        "name" : "Robuste Jeanshose",
  35.        "description" : "Robuste Jeanshose für alle Arbeiten.",
  36.        "desc_short" : "Leichte Pflegbarkeit - Robustes Material",
  37.        "price" : 49.99,
  38.        "discount" : null,
  39.        "ecs_price_brutto" : 49.99,
  40.        "ecs_uvp_brutto" : false,
  41.        "ecs_discount_pct" : false,
  42.        "ean" : 2766983747876,
  43.        {...} // alle weiteren Felder aus dem Daten-Typ "Produkt" sowie "Produkt-Preis" (siehe oben)
  44.      },
  45.      <n> : {...} // weitere Ergebnis-Arrays je nach Result-Menge
  46.   }
  47. }

 

c) Liste von 10 zufälligen Produkte die aktuell im Sale sind

Es sollen 10 Produkte zurückgeliefert werden, die aktuell einen gültigen Discount-Preis haben. Die Rückgabe soll dabei zufällig erfolgen.

  1.  
  2. /*
  3.  * Beispielarraydes API-URL-Calls für die zu übergebenen Parameter
  4.  * - Produkte mit aktuell gültigem Discount können über den Filter "drvd_currently_discounted" abgefragt werden
  5.  * - die Limitierung auf 10 Ergebnisse kann über die limit-Angabe erfolgen
  6.  * - mit dem Parameter result_order kann definiert werden, in welcher Reihenfolge die Produkte zurückgeliefert werden sollen.
  7.  */
  8. <your_api_url>&resource=product_getList&params[filter][drvd_currently_discounted]=1&params[result_order]=random&params[sql][limit][max]=10

Das Result der Abfrage ist eine Liste der abgefragten Bestellungen als Array.

  1.  
  2. /*
  3.  * Beispiel-JSON für das Result der Abfrage im Erfolgsfall
  4.  */
  5. {
  6.   "status" : true,
  7.   "msg" : null,
  8.   "data" : {
  9.      0 : {
  10.        "pcode" : "T00001-XS", // Artikelnummer
  11.        "name" : "T-Shirt mit Logo", // Name des Produktes
  12.        "description" : "Dieses T-Shirt passt perfekt zu Dir", // Beschreibungstext des Produktes, kann HTML enthalten
  13.        "desc_short" : "100% Baumwolle - Perfekte Passform", // Kurzbeschreibungstext des Produktes, kann HTML enthalten
  14.        "price" : 19.95, // normaler Brutto-Preis
  15.        "discount" : 14.97, // Brutto Discount-Preis
  16.        "ecs_price_brutto" : 14.97, // dynamisches Feld: aktuell gültiger Preis, mit Discount-Preis gefüllt, wenn dieser gültig ist, ansonsten normaler Brutto-Preis
  17.        "ecs_uvp_brutto" : 19.95, // dynamisches Feld: normaler Brutto-Preis des Produktes, ist nur gefüllt wenn ein Discount-Preis gesetzt wurde. Ansonsten "false"
  18.        "ecs_discount_pct" : 25.00, // dynamisches Feld: Discount-Prozente, nur gefüllt wenn ein Discount-Preis gesetzt wurde.
  19.        "ean" : 1129837473843, // EAN/GTIN des Produktes
  20.        "files_img" : {
  21.            0 : {
  22.                "mb_label" : "productbild_t00001-xs", // Mediabase-Label des Produktbildes
  23.                "mb_title" : "Super T-Shirt mit Logo", // Titel des Bildes in der Mediabase, kann z.B. als ALT-Attribut verwendet werden
  24.                "mb_caption" : null, // möglicher Untertitel zu einem Bild
  25.                "mb_path" : "\path\to\image", // Pfad zum Bild
  26.                [...] // weitere Mediabase-Daten
  27.            },
  28.             <n> : {...} // Daten zu weiteren Bildern
  29.        },
  30.        {...} // alle weiteren Felder aus dem Daten-Typ "Produkt" sowie "Produkt-Preis" (siehe oben)
  31.      },
  32.      1 : {
  33.        "pcode" : "S003982",
  34.        "name" : "Lederjacke Rocker",
  35.        "description" : "Hochwertige Lederjacke aus 100% echtem Rinderleder",
  36.        "desc_short" : "100% Rindsleder - Leichte Pflegbarkeit",
  37.        "price" : 249.93,
  38.        "discount" : 199.95,
  39.        "ecs_price_brutto" : 199.95,
  40.        "ecs_uvp_brutto" : 249.93,
  41.        "ecs_discount_pct" : 25.00,
  42.        "ean" : 18569837473843,
  43.        {...} // alle weiteren Felder aus dem Daten-Typ "Produkt" sowie "Produkt-Preis" (siehe oben)
  44.      },
  45.      <n> : {...} // weitere Ergebnis-Arrays je nach Result-Menge
  46.      9 : {
  47.        "pcode" : "M003983",
  48.        "name" : "Robuste Jeanshose",
  49.        "description" : "Robuste Jeanshose für alle Arbeiten.",
  50.        "desc_short" : "Leichte Pflegbarkeit - Robustes Material",
  51.        "price" : 55.00,
  52.        "discount" : 45.99,
  53.        "ecs_price_brutto" : 45.99,
  54.        "ecs_uvp_brutto" : 55.00,
  55.        "ecs_discount_pct" : 16.38,
  56.        "ean" : 22536983747876,
  57.        {...} // alle weiteren Felder aus dem Daten-Typ "Produkt" sowie "Produkt-Preis" (siehe oben)
  58.      },
  59.   }
  60. }