Events & Subscriber
In den Core einklinken
Shopware wirft an unzähligen Stellen Events. Über einen Event-Subscriber klinkt man eigene Logik ein, ohne den Core zu verändern – der saubere Weg, um Verhalten zu erweitern.
Ein Subscriber
Ein Subscriber implementiert das EventSubscriberInterface und meldet in getSubscribedEvents(), worauf er hört.
<?php declare(strict_types=1);
namespace Swag\Example\Subscriber;
use Shopware\Storefront\Page\Product\ProductPageLoadedEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class ProductSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents(): array
{
return [
ProductPageLoadedEvent::class => 'onProductPageLoaded',
];
}
public function onProductPageLoaded(ProductPageLoadedEvent $event): void
{
// z. B. Zusatzdaten an die Seite hängen
$page = $event->getPage();
}
}
Registrieren
Als Service mit dem Tag kernel.event_subscriber – dann findet Shopware den Subscriber automatisch:
<service id="Swag\Example\Subscriber\ProductSubscriber">
<tag name="kernel.event_subscriber"/>
</service>
Häufig genutzte Events
| Event | Zeitpunkt |
|---|---|
ProductPageLoadedEvent | Produktseite wird geladen |
CheckoutOrderPlacedEvent | eine Bestellung wurde ausgelöst |
StorefrontRenderEvent | vor dem Rendern einer Storefront-Seite |
EntityWrittenEvent | ein Datensatz wurde geschrieben |
Tipp: Über
StorefrontRenderEventlassen sich globale Daten an alle Templates weiterreichen – praktisch, aber sparsam einsetzen, damit es performant bleibt.
Damit sich ein Plugin auch konfigurieren lässt, braucht es Einstellungen – das ist der nächste Schritt.