Wie kann ich über die Sales Channel API Produkte holen, die einen bestimmten Tag haben?

Produkt-Listen und Details kann ich bereits problemlos über die Sales Channel API Produkte holen.

Was derzeit aber noch unklar ist: Wie kann ich z.B. Produkte nach einem Tag „filtern“ oder mir alternativ eine dynamische Produktgruppe (Anhand des Namens) ausgeben lassen?
Oder wie kann ich Media Elemente nach Tag „filtern“?

Oder ist das derzeit gar nicht über die Sales Channel API, sondern nur über die Admin API möglich?

Bin da für jeden Hinweis dankbar.

Viele Grüße
Michael

Filtern von Produkten nach Tags:

http://localhost:8000/sales-channel-api/v1/product/?associations[tags][]&filter[tags.name]=abc123

Weiterführende Literatur:

https://docs.shopware.com/en/shopware-platform-dev-en/api/admin-api-usage?category=shopware-platform-dev-en/api
https://docs.shopware.com/en/shopware-platform-dev-en/api/filter-search-limit?category=shopware-platform-dev-en/api
http://localhost:8000/api/v1/_info/swagger.html

Bei den Medien wird das schwieriger. Dafür gibt es nämlich (im Moment) scheinbar keinen Endpoint der Saleschannel API. D.h. den müsstest du dir selbst schreiben, bzw. das Shopware Medien Entity erweitern, siehe dazu als Referenz \Shopware\Core\Content\Product\SalesChannel\SalesChannelProductDefinition.  

Hier ist allerdings Vorsicht geboten. Die Saleschannel API erlaubt es bestimmte Entities bei der Abfrage zu verknüpfen. Wenn du also das Medien Entity per Saleschannel API öffentlich schaltest, solltest du sichergehen, dass man sich nicht durch eine gewiefte Abfrage an den Beziehungen der Medien zu anderen Entities (z.B. zu dem User, der das Medium hochgeladen hat) entlanghangeln und dadurch sensible Daten abgreifen kann.

Alternativ kannst du natürlich die Admin API verwenden. Diese ist aber für natürlich für andere Anwendungsfälle gedacht (z.B. Anbindung ERP, etc).

1 Like

Du solltest gar keine neue SalesChannel Definition mehr anlegen. Das Konzept geht nicht wirklich gut auf. Schreib dir lieber einen eigenen Controller

1 Like

@patchee500‍ Vielen Dank für die Info! Das funktioniert soweit auch gut für die Produkte. Hatte die getagten Produkte anfangs dummerweise nicht dem Sales Channel zugwiesen. Aber jetzt klappt es.

Ja, die Admin API versuche ich möglichst für Frontend Dinge zu vermeiden.

@Shyim‍ Danke für den Hinweis! Kannst Du das bitte etwas ausführen? Meinst Du das so in der Art: Erstelle Dir über einen eigenen Controller einen eigenen individuellen Endpoint, der dann genau das per JSON zurück gibt?

Vielen Dank noch mal für Eure Hilfe!
Michael

Genau so

1 Like