product_getList
Methode zum Abrufen einer Produktliste.
Informationen zu den Datenfelder eines Produktes finden Sie unter: Daten-Typ "Produkt" sowie unter: Daten-Typ "Produkt-Preis".
$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: |
[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). 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" |
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. [ type] ist typischerweise einer der folgenden Werte:
|
[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. |
Nachfolgend ein paar Beispiele zur Nutzung der API Ressource product_getList.
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".
/* * Beispielaufruf des API-URL-Calls für die zu übergebenen Parameter * - die Filterung auf die Kategorie "Frauen" ist über den Kategoriecode (node_code) möglich. */ <your_api_url>&resource=product_getList¶ms[filter][node_code]='cat_women'
Das Result der Abfrage ist ein JSON String.
/* * Beispiel-JSON für das Result der Abfrage im Erfolgsfall */ { "status" : true, "msg" : null, "data" : { 0 : { "pcode" : "T00001-XS", // Artikelnummer "name" : "T-Shirt mit Logo", // Name des Produktes "description" : "Dieses T-Shirt passt perfekt zu Dir", // Beschreibungstext des Produktes, kann HTML enthalten "desc_short" : "100% Baumwolle - Perfekte Passform", // Kurzbeschreibungstext des Produktes, kann HTML enthalten "price" : 19.95, // normaler Brutto-Preis "discount" : 14.97, // Brutto Discount-Preis "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 "ecs_uvp_brutto" : 19.95, // dynamisches Feld: normaler Brutto-Preis des Produktes, ist nur gefüllt wenn ein Discount-Preis gesetzt wurde. Ansonsten "false" "ecs_discount_pct" : 25.00, // dynamisches Feld: Discount-Prozente, nur gefüllt wenn ein Discount-Preis gesetzt wurde. "ean" : 1129837473843, // EAN/GTIN des Produktes "files_img" : { 0 : { "mb_label" : "productbild_t00001-xs", // Mediabase-Label des Produktbildes "mb_title" : "Super T-Shirt mit Logo", // Titel des Bildes in der Mediabase, kann z.B. als ALT-Attribut verwendet werden "mb_caption" : null, // möglicher Untertitel zu einem Bild "mb_path" : "\path\to\image", // Pfad zum Bild [...] // weitere Mediabase-Daten }, <n> : {...} // Daten zu weiteren Bildern }, {...} // alle weiteren Felder aus dem Daten-Typ "Produkt" sowie "Produkt-Preis" (siehe oben) }, 1 : { "pcode" : "P00347-3784", "name" : "Sweatshirt Albatros", "description" : "Tolles Sweatshirt mit einem Albatros", "desc_short" : "100% Baumwolle - Perfekte Passform", "price" : 19.95, "discount" : null, "ecs_price_brutto" : 19.95, "ecs_uvp_brutto" : false, "ecs_discount_pct" : false, "ean" : 892983749043, "files_img" : { 0 : { "mb_label" : "productbild_p00347", "mb_title" : "Albatros Shirt", "mb_caption" : "sehr bequemt", "mb_path" : "\path\to\image", [...] // weitere Mediabase-Daten }, <n> : {...} // Daten zu weiteren Bildern }, {...} // alle weiteren Felder aus dem Daten-Typ "Produkt" sowie "Produkt-Preis" (siehe oben) }, <n> : {...} // weitere Ergebnis-Arrays je nach Result-Menge } }
Es sollen alle Produkte zurückgeliefert werden, die zwischen 20,- und 100,- EUR kosten.
/* * Beispielarray des API-URL-Calls für die zu übergebenen Parameter * - die Preisspanne kann über einen Range-Filter definiert werden */ <your_api_url>&resource=product_getList¶ms[filter][price][range][min]=20¶ms[filter][price][range][max]=100
Das Result der Abfrage ist eine Liste der abgefragten Bestellungen als Array.
/* * Beispiel-JSON für das Result der Abfrage im Erfolgsfall */ { "status" : true, "msg" : null, "data" : { 0 : { "pcode" : "T00002-L", // Artikelnummer "name" : "T-Shirt mit Logo", // Name des Produktes "description" : "Dieses T-Shirt passt perfekt zu Dir", // Beschreibungstext des Produktes, kann HTML enthalten "desc_short" : "100% Baumwolle - Perfekte Passform", // Kurzbeschreibungstext des Produktes, kann HTML enthalten "price" : 29.95, // normaler Brutto-Preis "discount" : 24.95, // Brutto Discount-Preis "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 "ecs_uvp_brutto" : 29.95, // dynamisches Feld: normaler Brutto-Preis des Produktes, ist nur gefüllt wenn ein Discount-Preis gesetzt wurde. Ansonsten "false" "ecs_discount_pct" : 16.00, // dynamisches Feld: Discount-Prozente, nur gefüllt wenn ein Discount-Preis gesetzt wurde. "ean" : 1129837473844, // EAN/GTIN des Produktes "files_img" : { 0 : { "mb_label" : "productbild_t00002-l", // Mediabase-Label des Produktbildes "mb_title" : "Super T-Shirt mit Logo", // Titel des Bildes in der Mediabase, kann z.B. als ALT-Attribut verwendet werden "mb_caption" : null, // möglicher Untertitel zu einem Bild "mb_path" : "\path\to\image", // Pfad zum Bild [...] // weitere Mediabase-Daten }, <n> : {...} // Daten zu weiteren Bildern }, {...} // alle weiteren Felder aus dem Daten-Typ "Produkt" sowie "Produkt-Preis" (siehe oben) }, 1 : { "pcode" : "M003982", "name" : "Robuste Jeanshose", "description" : "Robuste Jeanshose für alle Arbeiten.", "desc_short" : "Leichte Pflegbarkeit - Robustes Material", "price" : 49.99, "discount" : null, "ecs_price_brutto" : 49.99, "ecs_uvp_brutto" : false, "ecs_discount_pct" : false, "ean" : 2766983747876, {...} // alle weiteren Felder aus dem Daten-Typ "Produkt" sowie "Produkt-Preis" (siehe oben) }, <n> : {...} // weitere Ergebnis-Arrays je nach Result-Menge } }
Es sollen 10 Produkte zurückgeliefert werden, die aktuell einen gültigen Discount-Preis haben. Die Rückgabe soll dabei zufällig erfolgen.
/* * Beispielarraydes API-URL-Calls für die zu übergebenen Parameter * - Produkte mit aktuell gültigem Discount können über den Filter "drvd_currently_discounted" abgefragt werden * - die Limitierung auf 10 Ergebnisse kann über die limit-Angabe erfolgen * - mit dem Parameter result_order kann definiert werden, in welcher Reihenfolge die Produkte zurückgeliefert werden sollen. */ <your_api_url>&resource=product_getList¶ms[filter][drvd_currently_discounted]=1¶ms[result_order]=random¶ms[sql][limit][max]=10
Das Result der Abfrage ist eine Liste der abgefragten Bestellungen als Array.
/* * Beispiel-JSON für das Result der Abfrage im Erfolgsfall */ { "status" : true, "msg" : null, "data" : { 0 : { "pcode" : "T00001-XS", // Artikelnummer "name" : "T-Shirt mit Logo", // Name des Produktes "description" : "Dieses T-Shirt passt perfekt zu Dir", // Beschreibungstext des Produktes, kann HTML enthalten "desc_short" : "100% Baumwolle - Perfekte Passform", // Kurzbeschreibungstext des Produktes, kann HTML enthalten "price" : 19.95, // normaler Brutto-Preis "discount" : 14.97, // Brutto Discount-Preis "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 "ecs_uvp_brutto" : 19.95, // dynamisches Feld: normaler Brutto-Preis des Produktes, ist nur gefüllt wenn ein Discount-Preis gesetzt wurde. Ansonsten "false" "ecs_discount_pct" : 25.00, // dynamisches Feld: Discount-Prozente, nur gefüllt wenn ein Discount-Preis gesetzt wurde. "ean" : 1129837473843, // EAN/GTIN des Produktes "files_img" : { 0 : { "mb_label" : "productbild_t00001-xs", // Mediabase-Label des Produktbildes "mb_title" : "Super T-Shirt mit Logo", // Titel des Bildes in der Mediabase, kann z.B. als ALT-Attribut verwendet werden "mb_caption" : null, // möglicher Untertitel zu einem Bild "mb_path" : "\path\to\image", // Pfad zum Bild [...] // weitere Mediabase-Daten }, <n> : {...} // Daten zu weiteren Bildern }, {...} // alle weiteren Felder aus dem Daten-Typ "Produkt" sowie "Produkt-Preis" (siehe oben) }, 1 : { "pcode" : "S003982", "name" : "Lederjacke Rocker", "description" : "Hochwertige Lederjacke aus 100% echtem Rinderleder", "desc_short" : "100% Rindsleder - Leichte Pflegbarkeit", "price" : 249.93, "discount" : 199.95, "ecs_price_brutto" : 199.95, "ecs_uvp_brutto" : 249.93, "ecs_discount_pct" : 25.00, "ean" : 18569837473843, {...} // alle weiteren Felder aus dem Daten-Typ "Produkt" sowie "Produkt-Preis" (siehe oben) }, <n> : {...} // weitere Ergebnis-Arrays je nach Result-Menge 9 : { "pcode" : "M003983", "name" : "Robuste Jeanshose", "description" : "Robuste Jeanshose für alle Arbeiten.", "desc_short" : "Leichte Pflegbarkeit - Robustes Material", "price" : 55.00, "discount" : 45.99, "ecs_price_brutto" : 45.99, "ecs_uvp_brutto" : 55.00, "ecs_discount_pct" : 16.38, "ean" : 22536983747876, {...} // alle weiteren Felder aus dem Daten-Typ "Produkt" sowie "Produkt-Preis" (siehe oben) }, } }