Geht das mit der v2 oder v3 API? Mit shop.de/api.php/v2/manufacturers erhalte ich die Hersteller. Wie bekomme ich die für Produkte vorhandenen Lieferstatus? shop.de/api.php/v2/delivery-status o. ä. hab ich nicht gefunden, in der Doku auch nicht. Oder habe ich etwas übersehen? Hinweise und Tipps sind wie immer herzlich Willkommen! Liebe Grüße und euch ein schönes Wochenende Jens
Hallo Jens, meinst Du eine Abfrage des API auf die Inhalte der Tabelle shipping_status, also welche ID/Werte-Paare für shippingTimeId einer GXProduct Ressource https://developers.gambio.de/docs/4.8.0.0/rest/gambio-gx3-api/resources/gxproduct/ existieren können?
Hab jetzt grade ein wenig rumgesucht... Ich nehme an, Du meinst den Lieferstatus des Produkts, also ob z.B. "Nicht lieferbar" oder "1-2 Tage" (je nachdem welche Du Definiert hast) im Produkt an gezeigt werden? Soweit ich das gesehen habe ist das nicht setzbar oder abfragbar über die API, letztlich ergibt es sich aber ja aus dem Lagerbestand (den Du ja abfragen kannst) und Deiner Einstellung im Shop, wie der Lagebstand sich auf den Lieferstatus auswirken soll. Könntest Du also davon ableiten.
Guten Morgen, Vielen Dank für eure Antworten. Ja, @Pepe, genau das wollte ich. Ihr meint ja beide im Grunde dasselbe. Aber ich bräuchte alle vorhandenen Paare - so, dass ich in einer externen Anwendung im Product edit - nicht nur den aktuellen Wert des Artikels habe, sondern auch ein Select-Feld, mit allen Möglichkeiten (shipping_status), um ihn auch ändern zu können. Dann führt der Weg wohl doch über einen direkten DB-Zugriff. Ich dachte, ich hätte den Weg mit der API wohlmöglich übersehen. Ich habe in älteren Threads gesehen, dass ihr beide, @Pepe und @markus_wick, euch schon länger mit der API beschäftigt. Sehe ich das richtig, dass in jedem Fall eine parallele DB-Anbindung sinnvoll ist, da Vieles eben noch nicht per API zu lösen ist?
Ich bin da recht einfach gestrickt: Was die API nicht kann, mach ich nicht.... Ich nutze nur, was der Shop grundsätzlich bietet, auch keine zusätzlichen Module oder so. Reicht bei mir aus. Direkte Eingriffe in die DB hab ich mal probiert, gibt aus meiner Sicht und mit meinen begrenzten technischen Fähigkeiten keinen guten Workflow.
Ah okay, danke für den Einblick. Ich schreibe mir gerade noch entsprechende Klassen, um alles nicht abgedeckte zu holen und sieht bisher gut aus. Mal sehen, was draus wird. Ich wünsch' euch eine schöne Woche Jens
Wenn das API das nicht hergibt, was eigentlich drin sein sollte (was bei den Daten aus shipping_status wie von Dir beschrieben der Fall ist, IMHO) sollte das ein Feature Request sein, denn die API-fizierung ist ja ein schon lange erklärtes Ziel für gambio. Ich mache grundsätzlich auch keine Veränderungen direkt in der DB. In Deinem Fall würde ich auch das API entsprechend erweitern, so dass die Daten zumindest abrufbar (GET) sind. Viel Erfolg und ebenfalls eine schöne Woche!
Hallo @Pepe Es ging mir nur ums abholen (GET). Das heißt, ich brauche wirklich nur die shipping_status auslesen. Wie das mit dem API geht, habe ich nicht herausgefunden. Ich hole mir das per DB-Abfrage - über API wäre angenehmer. PS: witzig - für mich war es immer die API, aber das Interface - du hast recht, danke
Hallo Jens Du könntest ja das API um den Endpoint /shipping_status (im folgenden Beispiel Version 2, also api.php/v2/shipping_status) erweitern. Dafür schreibst Du dann den entsprechenden Controller ShippingStatusApiV2Controller. Ich würde den schön ordentlich in GXModules/{Developer}/{Module}/Api/v2/ legen. Das Mapping von Endpoint zu Controllername passiert übrigens in der api.php. Ich habe Dir nachfolgend mal nen beispielhaften Controller, der die Werte aus der DB Tabelle shipping_status mit Hilfe der Klasse ProductsShippingStatusSource holt, was aber sprachabhängig ist. Nur mal so als Inspiration ... PHP: <?php/** ----------------------------------------------------------------------------* ShippingStatusApiV2Controller.inc.php 2023-10-18* ----------------------------------------------------------------------------*/class ShippingStatusApiV2Controller extends HttpApiV2Controller{ public function get() { if (!isset($this->uri[1])) { $this->_writeResponse($this->_getAllShippingStatus()); } else { throw new HttpApiV2Exception('not implemented', 501); } } private function _getAllShippingStatus() { $shipping_status_obj = MainFactory::create_object('ProductsShippingStatusSource'); return $shipping_status_obj->get_all_shipping_status(); } public function post() { throw new HttpApiV2Exception('For this endpoint POST has not been implemented yet.', 501); } public function put() { throw new HttpApiV2Exception('For this endpoint PUT has not been implemented yet.', 501); } public function delete() { throw new HttpApiV2Exception('For this endpoint DELETE has not been implemented yet.', 501); } }