Store API: media leer in category - product-listing

Hi! Wir bauen ein eigenes, auf der Store API basierendes Frontend. Wenn wir Kategorien ueber die API abrufen (z.B. /store-api/category/xxxxxxxxxxxxxx), bekommen wir die Produktdaten, allerdings ohne die zugeordneten Bilder (media). Das Cover-Bild (cover) ist enthalten:

"cover": {
  "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425",
  "translated": [],
  "createdAt": "2023-10-03T14:38:21.083+00:00",
  "updatedAt": "2023-10-03T14:38:22.745+00:00",
  "productId": "018aaceac0c572499438521f9d07d8c9",
  "mediaId": "018af5f9bc0170eeadf484687eb7b609",
  [...]
}

Aber media ist komplett leer:

"media": null,

Wir haben bereits diverse „associations“ ausprobiert, kommen jedoch leider nicht weiter. Das Ziel ist, im Listing mehr als ein Produktbild anzuzeigen. Das klappt so leider nicht.

Vielen Dank fuer jede Hilfe!

Hallo pelle,
damit zusätzliche Bilder im Listing geladen werden, braucht man einen Subscriber.
Bei entsprechenden Events können die Medien mit geladen werden.
Am besten realisiert man das mit einem eigenen Plugin.

Wenn ihr eine Möglichkeit gefunden habt zusätzliche Bilder auf einer „Shopseite“ zu laden, wäre ich auch an der Lösung interessiert.

Viele Grüße

2 „Gefällt mir“

Hi Laudenz!

Danke fuer die flotte Antwort. Weisst Du zufaellig, welches Event das waere bzw. wie man dann die Bilder laedt?

Vermutlich ist das doch etwas sehr umstaendlich, aber falls wir doch eine Loesung implementieren, lasse ich es Dich geren wissen und schicke Dir unser Plugin :slight_smile:

Schau mal hier, in meinem letzten Post ist der Code, wie man die Medien beim Cross-Selling lädt.
‚moreData‘ ist ein Platzhalter für ‚media‘.

Vielen Dank :slight_smile:

Ist vom Aufwand überschaubar würde ich sagen. Meldet euch gerne, wenn ihr Hilfe braucht.

1 „Gefällt mir“

Ich habe das jetzt mal ausprobiert, komme aber nicht so richtig weiter:

use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Shopware\Core\Content\Product\Events\ProductListingCriteriaEvent;

class ProductListingMediaService implements EventSubscriberInterface
{
	public static function getSubscribedEvents(): array
	{
		return [
			ProductListingCriteriaEvent::class => 'onProductListingCriteria',
		];
	}

    public function onProductListingCriteria($event)
    {
        $criteria = $event->getCriteria();
		$criteria->addAssociation('media');
    }
}

Es gibt allerdings weiterhin media: null in der Antwort. Das Plugin laeuft definitiv waehrend des API-Requests, das konnte ich mit dd() pruefen.

Danke!

Ups! Mein Fehler, da war wohl eine alte Version im Cache. Es tut! DANKE!

Freut mich wenn es geklappt hat! :slight_smile:

Hast du eine Idee, wie man die Medien auf der Startseite laden kann?
Die Startseite ist vom Typ „Shopseite“ und es wurden in der Erlebniswelt die Commerce Blöcke „Drei Spalten, Produkt-Boxen“ und „Produkt-Slider“ eingefügt. Dort sollen die zusätzlichen Medien zur Verfügung stehen.

Dieses Thema wurde automatisch 30 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.