Subscriber Event für zusätzliche Produktdaten auf der Startseite

Hallo zusammen,

ich habe eine Frage zu den Events. Welches Event muss ich in einem Subscriber verwenden, um zusätzliche Produktdaten im Listing auf der Startseite einzufügen?

Die richtigen Events für Produktlisting (Kategorieseite), Cross-Selling, Suche und Wunschliste habe ich gefunden. Dort funktioniert es und ich kann die zusätzlichen Daten mit Hilfe des Subscribers abrufen. Nur für die Startseite finde ich nicht das passende Event / die passenden Events.

Auf der Startseite werden in der Erlebniswelt die Commerce Blöcke „Drei Spalten, Produkt-Boxen“ und „Produkt-Slider“ verwendet, dort sollen die zusätzlichen Produktdaten zur Verfügung stehen.

Viele Grüße

sales_channel.product.process.criteria
sales_channel.product.loaded

Gilt dann global für Storefront

Hi @Moorleiche ,

vielen Dank für die schnelle Antwort. Gilt das auch für die Shopware Version 6.4.20.2?
Sorry hatte ich vergessen zu erwähnen.

Ich habe mir die beiden Events angeschaut und sie wie folgt in meinem Subscriber implementiert:

// use ...
use Shopware\Core\Content\Product\Events\ProductProcessCriteriaEvent;
use Shopware\Core\Content\Product\Events\ProductLoadedEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class MEINSubscriber implements EventSubscriberInterface
{
	public static function getSubscribedEvents(): array
	{
		return [
			ProductProcessCriteriaEvent::class => 'onProductProcessCriteria',
			ProductLoadedEvent::class => 'onStorefrontProductLoaded'
		];
	}

	public function onStorefrontProductLoaded(ProductLoadedEvent $event): void
	{
		foreach ($event->getProducts() as $product) {
			$product->addExtension("additionalData", $productData());
		}
	}
	//...
}

Leider werden die Daten auf der Startseite nicht geladen. Was mache ich falsch?

Beim Cross-Selling habe ich das ganze so umgesetzt, dort funktioniert es:

// use ...
use Shopware\Core\Content\Product\Events\ProductCrossSellingIdsCriteriaEvent;

class MEINSubscriber implements EventSubscriberInterface
{
	public static function getSubscribedEvents(): array
	{
		return [
			ProductCrossSellingIdsCriteriaEvent::class => 'onCrossSellingProductListCriteria'
		];
	}

	public function onCrossSellingProductListCriteria(ProductCrossSellingIdsCriteriaEvent $event): void
	{
		$criteria = $event->getCriteria();
		$criteria->addAssociation('moreData');
	}
	//...
}

Hat jemand eine Idee?