2. Januar 2021 // 14:00

Tutorial: GTM Plugin über Events erweitern [Shopware 5]

Unser Plugin für die einfache Integration des Google Tag Manager Codes in Ihr Shopware-System kann direkt im Shopware Store erworben werden: https://store.shopware.com/dtgs01469/google-tag-manager-remarketing-enhanced-ecommerce.html

So erweitern Sie unser Plugin einfach und updatesicher

Wir erweitern unser Plugin regelmäßig um neue Funktionen und bauen immer wieder Kund*innenwünsche ein. Dennoch gibt es immer wieder Gründe, z.B. den Datalayer um eigene Werte zu erweitern, die so spezifisch sind, dass wir sie nicht generell ins Plugin aufnehmen können. Für diese Fälle haben wir im Plugin mehrere Filter Events eingebaut, mit Hilfe derer Sie unser Plugin um eigene Werte erweitern können. Der Code unseres Plugins bleibt dabei unverändert, sodass Updates kein Problem sind und keine ständige Anpassung benötigen. Und so geht’s:

Download des GTM Extender Plugins

Um die Anpassung vorzunehmen, müssen Sie ein eigenes Plugin erstellen. Wie dies aussehen kann, können Sie sich hier anschauen: Download des GTM Extender Plugins (Beispiel)

Das Plugin im Detail, #1: Event Subscriber

Im Beispiel möchten wir die Tags im Datalayer um einen weiteren Wert bezüglich der Kund*innen-Daten erweitern. Zunächst müssen wir dem Plugin mitteilen, an welches Filter Event des codiverse Google Tag Manager Plugins es sich hängen soll. Im Beispiel wählen wir dafür das Event Dtgs_GoogleTagManager_Components_TagManagerHelper_GetCustomerTags_FilterCustomerTags.

/**
     * subscribes events
     * @return void
     */
    protected function subscribeEvents() {
        
        $this->subscribeEvent(
            'Dtgs_GoogleTagManager_Components_TagManagerHelper_GetCustomerTags_FilterCustomerTags',
            'myFilterCustomerTags'
        );

    }

Das Plugin im Detail, #2: Daten anpassen und zurückgeben

In Schritt #1 haben wir definiert, dass nach dem Aufruf des gewünschten Events die Methode „myFilterCustomerTags()“ aufgerufen werden soll. Dies können wir nun nutzen, um die Daten nach Wunsch zu erweitern. Im Code des Haupt-Plugins wird in der Datei custom/plugins/DtgsGoogleTagManager/Components/TagManagerHelper.php in der Funktion „getCustomerTags()“ in Zeile 344 (Stand Januar 2021, kann sich mit der Zeit ändern) das Filter-Event ausgelöst. Dort übergeben wir unter dem Key „customer“ die Kund*innendaten, die wir bereits aus der Datenbank gezogen haben, sodass Sie diese nicht erneut anfragen müssen.

Um schließlich Ihre eigenen Wunschwerte hinzuzufügen, holen Sie sich zunächst den Return-Wert der Original-Funktion (das sind die Tags, die unser Plugin bereits erfasst hat):

$tags = $args->getReturn();

Fügen Sie anschließend Ihre Wunsch-Werte hinzu und übergeben Sie das modifizierte Array wieder dem Haupt-Plugin:

$tags['visitorCustomKey'] = $additional_customer_info;

$args->setReturn($tags);

Die vollständige Funktion könnte dann z.B. so aussehen:

/**
     * @param Enlight_Event_EventArgs $args
     */
    public function myFilterCustomerTags(Enlight_Event_EventArgs $args)
    {

        $tags = $args->getReturn();
        $customer = $args->get('customer');

        try {
            $additional_customer_info = $this->myCustomFunction($customer);
        } catch (\Exception $exception) {
            //Log error!!
            return;
        }

        $tags['visitorCustomKey'] = $additional_customer_info;

        $args->setReturn($tags);

    }

Viele weitere Anpassungen möglich

Die Erweiterung per Filter-Events macht eine Vielzahl von Anpassungen möglich. Sollte Ihnen ein Filter-Event fehlen, kontaktieren Sie unseren hilfsbereiten Support – wir helfen Ihnen gern.

Shopware Filter Events

Diese Events stellen wir Ihnen im Plugin zur Verfügung:

– Dtgs_GoogleTagManager_Components_EcommerceHelper_GetCheckoutStep_FilterCheckoutStep
– Dtgs_GoogleTagManager_Components_EcommerceHelper_GetBasketItems_FilterBasketItem
– Dtgs_GoogleTagManager_Components_EcommerceHelper_GetDetailTags_FilterDetailTags
– Dtgs_GoogleTagManager_Components_TagManagerHelper_GetGeneralTags_FilterGeneralTags
– Dtgs_GoogleTagManager_Components_TagManagerHelper_GetDetailTags_FilterDetailTags
– Dtgs_GoogleTagManager_Components_TagManagerHelper_GetCheckoutTags_FilterCheckoutTags
– Dtgs_GoogleTagManager_Components_TagManagerHelper_GetCustomerTags_FilterCustomerTags

Eine vollständige Liste aller verfügbaren Events und Werte im Datalayer finden Sie hier: zum Blogeintrag.