Shopware 6 Lösung für 'Process the element data before output'

Hallo

In Shopware 5 gibt es eine Beschreibung, wie man Daten eines Custom CMS Elements vor der Ausgabe bearbeiten/ändern kann:
Custom shopping world elements

 

Die Developer-Dokumentation für Shopware 6 sagt zu diesem Thema leider nichts, die Storefront-Integration verwendet einfach die bereits konfigurierten Daten:

https://docs.shopware.com/en/shopware-platform-dev-en/how-to/custom-cms-element

 

Weiss jemand von einer entsprechende Dokumentation für Shopware 6? Oder weiss jemand wie die Konfigurationsdaten eines Custom CMS Elements in Shopware 6 vor der Storefront-Ausgabe geändert werden können?

 

Vielen Dank!

Eine mögliche Lösung habe ich nun doch noch selbst gefunden: Ein Subscriber an den CmsPageEvents::SLOT_LOADED_EVENT hängen.

Die Liste aller möglichen CmsPageEvents findet man hier: shopware/core/Content/Cms/CmsPageEvents.php

Subscriber-Klasse (entschuldigung, das Einfügen von Codeschnipseln begreife ich noch nicht):

// /custom/plugins/MeinPlugin/src/Subscriber/MySubscriber.php

namespace: Mein\Plugin\Subscriber;

use Shopware\Core\Framework\DataAbstractionLayer\Event\EntityLoadedEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Shopware\Core\Content\Cms\CmsPageEvents;

class MySubscriber implements EventSubscriberInterface
{
    public static function getSubscribedEvents(): array
    {
        return [
            CmsPageEvents::SLOT_LOADED_EVENT => 'onSlotLoaded',
        ];
    }

    public function onSlotLoaded($event) {
        $entities = $event->getEntities();
        foreach ($entities as $entity) {
            // die Entity kann hier verändert werden
        }
    }
}

 

Registrieren des Subscribers:

// /custom/plugins/MeinPlugin/Resources/config/services.xml