From ed767efa8a102d19b5fc09e4191b712bc2f48ed6 Mon Sep 17 00:00:00 2001 From: Marat <1874024+vanilla-thunder@users.noreply.github.com> Date: Thu, 9 Jun 2022 20:41:59 +0200 Subject: [PATCH] alter Zwiscehnstand --- Application/Extend/ViewConfig.php | 76 ++++++--- Application/views/admin/de/module_options.php | 2 +- Application/views/blocks/_gtm_js.tpl | 1 + ...impression.tpl => widget_product_list.tpl} | 0 Application/views/ga4/add_payment_info.tpl | 0 Application/views/ga4/add_shipping_info.tpl | 0 Application/views/ga4/begin_checkout.tpl | 0 Application/views/ga4/generate_lead.tpl | 0 Application/views/ga4/login.tpl | 0 Application/views/ga4/purchase.tpl | 0 Application/views/ga4/remove_from_cart.tpl | 0 Application/views/ga4/search.tpl | 0 Application/views/ga4/select_content.tpl | 0 Application/views/ga4/select_item.tpl | 0 Application/views/ga4/select_promotion.tpl | 0 Application/views/ga4/sign_up.tpl | 0 Application/views/ga4/view_cart.tpl | 0 Application/views/ga4/view_promotion.tpl | 0 README.md | 51 +++--- metadata.php | 159 ++++++++++-------- thumbnail.png | Bin 0 -> 31399 bytes 21 files changed, 166 insertions(+), 123 deletions(-) mode change 100644 => 100755 Application/Extend/ViewConfig.php mode change 100644 => 100755 Application/views/admin/de/module_options.php mode change 100644 => 100755 Application/views/blocks/_gtm_js.tpl rename Application/views/blocks/{impression.tpl => widget_product_list.tpl} (100%) create mode 100755 Application/views/ga4/add_payment_info.tpl create mode 100755 Application/views/ga4/add_shipping_info.tpl create mode 100755 Application/views/ga4/begin_checkout.tpl create mode 100755 Application/views/ga4/generate_lead.tpl create mode 100755 Application/views/ga4/login.tpl create mode 100755 Application/views/ga4/purchase.tpl create mode 100755 Application/views/ga4/remove_from_cart.tpl create mode 100755 Application/views/ga4/search.tpl create mode 100755 Application/views/ga4/select_content.tpl create mode 100755 Application/views/ga4/select_item.tpl create mode 100755 Application/views/ga4/select_promotion.tpl create mode 100755 Application/views/ga4/sign_up.tpl create mode 100755 Application/views/ga4/view_cart.tpl create mode 100755 Application/views/ga4/view_promotion.tpl mode change 100644 => 100755 README.md mode change 100644 => 100755 metadata.php create mode 100755 thumbnail.png diff --git a/Application/Extend/ViewConfig.php b/Application/Extend/ViewConfig.php old mode 100644 new mode 100755 index f9cb0f7..15b2ecd --- a/Application/Extend/ViewConfig.php +++ b/Application/Extend/ViewConfig.php @@ -25,46 +25,74 @@ class ViewConfig extends ViewConfig_parent // Google Tag Manager Container ID private $sContainerId = null; + public function getGtmContainerId() { - if ( $this->sContainerId === null ) { + if ($this->sContainerId === null) + { $this->sContainerId = ContainerFactory::getInstance() - ->getContainer() - ->get(ModuleSettingBridgeInterface::class) - ->get('vt_gtm_containerid', 'vt-gtm'); + ->getContainer() + ->get(ModuleSettingBridgeInterface::class) + ->get('vt_gtm_sContainerID', 'vt-gtm'); } return $this->sContainerId; } + private $blGA4enabled = null; + public function isGA4enabled() + { + if ($this->blGA4enabled === null) + { + $this->sContainerId = ContainerFactory::getInstance() + ->getContainer() + ->get(ModuleSettingBridgeInterface::class) + ->get('vt_gtm_blEnableGA4', 'vt-gtm'); + } + + return $this->blGA4enabled; + } public function getGtmDataLayer() { - if( !$this->getGtmContainerId() ) return "[]"; + if (!$this->getGtmContainerId()) return "[]"; $oConfig = Registry::getConfig(); - $oView = $oConfig->getTopActiveView(); /** @var FrontendController $oShop */ + $oView = $oConfig->getTopActiveView(); + /** @var FrontendController $oShop */ //$oShop = oxRegistry::getConfig()->getActiveShop(); /** @var oxShop $oShop */ $oUser = $oConfig->getUser(); - $dataLayer = [ - 'page_title' => $oView->getTitle(), - 'controller' => $this->getTopActionClassName(), - 'user' => ( $oUser ? "true" : "false" ) + $cl = $this->getTopActionClassName(); + $aPageTypes = [ + "content" => "cms", + "details" => "product", + "alist" => "listing", + "search" => "listing", + "basket" => "checkout", + "user" => "checkout", + "payment" => "checkout", + "order" => "checkout", + "thankyou" => "checkout", ]; - return json_encode([$dataLayer],JSON_PRETTY_PRINT); + $dataLayer = [ + 'page' => [ + 'type' => $aPageTypes[$cl] ?? "unknown", + 'title' => $oView->getTitle(), + 'cl' => $cl, + ], + 'userid' => ($oUser ? $oUser->getId() : false), + 'sessionid' => session_id() ?? false, + //'httpref' => $_SERVER["HTTP_REFERER"] ?? "unknown" + ]; + + return json_encode([$dataLayer], JSON_PRETTY_PRINT); unset($dataLayer["user"]["http"]); // das brauchen wir hier nicht - $cl = $this->getActiveClassName(); - if( $cl === "content" ) $dataLayer["page"]["type"] = "cms"; - elseif( $cl === "details" ) $dataLayer["page"]["type"] = "product"; - elseif( in_array($cl,["alist","search"]) ) $dataLayer["page"]["type"] = "listing"; - elseif( in_array($cl,["basket","user","payment","order","thankyou"]) ) $dataLayer["page"]["type"] = "checkout"; - - return json_encode([$dataLayer],JSON_PRETTY_PRINT); + return json_encode([$dataLayer], JSON_PRETTY_PRINT); /* // --- Produktdaten --- $transactionProducts = []; @@ -87,11 +115,15 @@ class ViewConfig extends ViewConfig_parent */ } - public function isPromotionList($listId) + public function triggerGA4events() { - $oConfig = Registry::getConfig(); - $aPromotionListIds = $oConfig->getConfigParam("") ?? [ 'bargainItems', 'newItems', 'topBox', 'alsoBought', 'accessories', 'cross' ]; - + // general events } + + public function isPromotionList($listId) + { + $oConfig = Registry::getConfig(); + $aPromotionListIds = $oConfig->getConfigParam("") ?? ['bargainItems', 'newItems', 'topBox', 'alsoBought', 'accessories', 'cross']; + } } \ No newline at end of file diff --git a/Application/views/admin/de/module_options.php b/Application/views/admin/de/module_options.php old mode 100644 new mode 100755 index bb0a054..dffc84e --- a/Application/views/admin/de/module_options.php +++ b/Application/views/admin/de/module_options.php @@ -26,6 +26,6 @@ input.confinput:hover {outline:3px solid #ff3600;} $aLang = [ 'charset' => 'UTF-8', 'SHOP_MODULE_GROUP_vt_gtm_settings' => $style . 'Einstellungen', - 'SHOP_MODULE_vt_gtm_containerid' => 'Container ID', + 'SHOP_MODULE_vt_gtm_sContainerID' => 'Container ID', 'SHOP_MODULE_vt_gtm_promotionlistids' => 'Promotion Produktlisten IDs
Weitere Infos zu dieser Einstellung: Modui-Wiki
', ]; diff --git a/Application/views/blocks/_gtm_js.tpl b/Application/views/blocks/_gtm_js.tpl old mode 100644 new mode 100755 index 46e65c2..3539472 --- a/Application/views/blocks/_gtm_js.tpl +++ b/Application/views/blocks/_gtm_js.tpl @@ -12,6 +12,7 @@ })(window, document, 'script', 'dataLayer', '[{$oViewConf->getGtmContainerId()}]'); + [{$oViewConf->triggerGA4events()}] [{if $oViewConf->getTopActionClassName() === "alist" }] [{* include file="ga4_view_item_list.tpl" gtmCategory=$oView->getActiveCategory() gtmProducts=$oView->getArticleList() listtype=$oView->getListType() *}] [{elseif $oViewConf->getTopActionClassName() === "details" }] diff --git a/Application/views/blocks/impression.tpl b/Application/views/blocks/widget_product_list.tpl similarity index 100% rename from Application/views/blocks/impression.tpl rename to Application/views/blocks/widget_product_list.tpl diff --git a/Application/views/ga4/add_payment_info.tpl b/Application/views/ga4/add_payment_info.tpl new file mode 100755 index 0000000..e69de29 diff --git a/Application/views/ga4/add_shipping_info.tpl b/Application/views/ga4/add_shipping_info.tpl new file mode 100755 index 0000000..e69de29 diff --git a/Application/views/ga4/begin_checkout.tpl b/Application/views/ga4/begin_checkout.tpl new file mode 100755 index 0000000..e69de29 diff --git a/Application/views/ga4/generate_lead.tpl b/Application/views/ga4/generate_lead.tpl new file mode 100755 index 0000000..e69de29 diff --git a/Application/views/ga4/login.tpl b/Application/views/ga4/login.tpl new file mode 100755 index 0000000..e69de29 diff --git a/Application/views/ga4/purchase.tpl b/Application/views/ga4/purchase.tpl new file mode 100755 index 0000000..e69de29 diff --git a/Application/views/ga4/remove_from_cart.tpl b/Application/views/ga4/remove_from_cart.tpl new file mode 100755 index 0000000..e69de29 diff --git a/Application/views/ga4/search.tpl b/Application/views/ga4/search.tpl new file mode 100755 index 0000000..e69de29 diff --git a/Application/views/ga4/select_content.tpl b/Application/views/ga4/select_content.tpl new file mode 100755 index 0000000..e69de29 diff --git a/Application/views/ga4/select_item.tpl b/Application/views/ga4/select_item.tpl new file mode 100755 index 0000000..e69de29 diff --git a/Application/views/ga4/select_promotion.tpl b/Application/views/ga4/select_promotion.tpl new file mode 100755 index 0000000..e69de29 diff --git a/Application/views/ga4/sign_up.tpl b/Application/views/ga4/sign_up.tpl new file mode 100755 index 0000000..e69de29 diff --git a/Application/views/ga4/view_cart.tpl b/Application/views/ga4/view_cart.tpl new file mode 100755 index 0000000..e69de29 diff --git a/Application/views/ga4/view_promotion.tpl b/Application/views/ga4/view_promotion.tpl new file mode 100755 index 0000000..e69de29 diff --git a/README.md b/README.md old mode 100644 new mode 100755 index 4d67c56..2508a71 --- a/README.md +++ b/README.md @@ -1,34 +1,23 @@ # [vt] Google Tag Manager Google Tag Manager integration for OXID eShop v6.2 und höher -module version 0.2.0 ( 2018-12-04 ) +module version 0.5.0 ( 2021-12-10 ) -# Installation +## Installation * ``composer require vanilla-thunder/oxid-module-gtm --no-update`` - -* Inhalt von "copy_this" in den Shop hochladen * Modul aktivieren und Moduleinstellungen konfigurieren -# Tag Manager konfigurieren: +## Tag Manager konfigurieren: + https://support.google.com/tagmanager/answer/9442095 +## Google Analytics 4 Einrichtung +## GA4 Events / Customizing +für alle implementierten GA4 Events existieren Templates unter `source/modules/GoogleTagManager/Application/views/ga4/`, dabei entspricht der Dateiname dem Eventnamen in GA4. +Die Einbindung dieser Event-Templates erfolgt über TPL-Blöcke unter `source/modules/GoogleTagManager/Application/views/blocks/`. +## Universal Analytics Events - -Alle drei unterstützten Tag Manager werden mit Daten aus einer gemeinsamen Datenschicht (dataLayer) gefüttert. -Für die einfachste Übersicht der enthaltenen Daten empfehle ich den Vorschau-Modus vom Google Tag Manager. - -Bei jedem Seitenaufruf wird die Datenschicht mit einigen wenigen Infos erstellt, die man zum reinen Erfassen der Seitenaufrufe benötigt: - + **page.type** - Seitentyp: default / cms / product / listing / checkout (an google analytics angelehnt) - + **page.title** - Seitentitel (außer Startseite, sie hat keinen Titel. Danke OXID...) - + **page.class** - OXID Controller Klasse (start, search, etc) - + **user.country** - Land des Benutzers, sofern dieser angemeldet ist. - + **user.httpref** - http referrer - -Alle für Ecommerce Tracking releavanten Daten werden mit speziellen Ecommerce Events in die Datenschicht eingefügt. -Hier ist ein Beispiel für die Einrichtung von Enhanced Ecomemrce Tracking über Google Tag Manager: - -**"EE-Trigger" für Ecomemrce-Tags (Beispiel für Google Tag Manager):** +**"EE-Trigger" für Ecomemrce-Tags (Beispiel für Google Tag Manager):** + Triggertyp: Benutzerdefiniertes Ereignis + Ereignisname: ``ee\..*`` + Übereinstimmung mit regulärem Ausdruck verwenden @@ -41,16 +30,26 @@ Hier ist ein Beispiel für die Einrichtung von Enhanced Ecomemrce Tracking über + Label: {{Event Label}} + Trigger : EE-Trigger -Eine Video-Anleitung mit der kompletten Google Analytics Einrichtung folgt in Kürze. +## Verfügbare Datalayer Variablen +Für die einfachste Übersicht der enthaltenen Daten empfehle ich den Vorschau-Modus vom Google Tag Manager. + +Bei jedem Seitenaufruf wird die Datenschicht mit einigen wenigen Infos erstellt, die man zum reinen Erfassen der Seitenaufrufe benötigt: + + **page.type** - Seitentyp: default / cms / product / listing / checkout (an google analytics angelehnt) + + **page.title** - Seitentitel (außer Startseite, sie hat keinen Titel. Danke OXID...) + + **page.cl** - OXID Controller Klasse (start, search, etc) + + **userid** - oxID vom Benutzer bzw `false` falls nicht eingeloggt + + **sessionid** - session iD + +Alle für Ecommerce Tracking releavanten Daten werden mit speziellen Ecommerce Events in die Datenschicht eingefügt. +Hier ist ein Beispiel für die Einrichtung von Enhanced Ecomemrce Tracking über Google Tag Manager: + -### Google Analytics 4 Referenz -https://developers.google.com/tag-manager/ecommerce-ga4 ### LICENSE AGREEMENT - [bla] tag-manager - Copyright (C) 2018 bestlife AG - info: oxid@bestlife.ag + [vt] google-tag-manager + Copyright (C) 2021 Marat Bedoev + info: info@mb-dev.pro oder so /** @todo: überarbeiten, wenn ich wieder nüchtern bin */ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; diff --git a/metadata.php b/metadata.php old mode 100644 new mode 100755 index 3d912a3..8dee4b4 --- a/metadata.php +++ b/metadata.php @@ -13,144 +13,155 @@ **/ $sMetadataVersion = '2.1'; -$aModule = [ - 'id' => 'vt-gtm', - 'title' => '[vt] Google Tag Manager', +$aModule = [ + 'id' => 'vt-gtm', + 'title' => '[vt] Google Tag Manager', 'description' => 'Google Tag Manager Integration for OXID eShop v6.2+', - 'thumbnail' => 'thumbnail.png', - 'version' => '0.5.0 ( 2021-07-17 )', - 'author' => 'Marat Bedoev', - 'email' => openssl_decrypt("Az6pE7kPbtnTzjHlPhPCa4ktJLphZ/w9gKgo5vA//p4=", str_rot13("nrf-128-pop"), str_rot13("gvalzpr")), - 'url' => 'https://github.com/vanilla-thunder/oxid-module-gtm', - 'extend' => [ + 'thumbnail' => 'thumbnail.png', + 'version' => '0.5.0 ( 2021-07-17 )', + 'author' => 'Marat Bedoev', + 'email' => openssl_decrypt("Az6pE7kPbtnTzjHlPhPCa4ktJLphZ/w9gKgo5vA//p4=", str_rot13("nrf-128-pop"), str_rot13("gvalzpr")), + 'url' => 'https://github.com/vanilla-thunder/oxid-module-gtm', + 'extend' => [ \OxidEsales\Eshop\Core\ViewConfig::class => VanillaThunder\GoogleTagManager\Application\Extend\ViewConfig::class ], - 'templates' => [ - // separate ee-event templates for easy integration - //'ga4_add_to_cart.tpl' => 'vt/GoogleTagManager/Application/views/ga4/add_to_cart.tpl', - //'ga4_view_item.tpl' => 'vt/GoogleTagManager/Application/views/ga4/view_item.tpl', - //'ga4_view_item_list.tpl' => 'vt/GoogleTagManager/Application/views/ga4/view_item_list.tpl', - 'gtm_ua_impression' => 'vt/GoogleTagManager/Application/views/ua/impression.tpl' + 'templates' => [ + // GA4 events + 'ga4_add_payment_info.tpl' => 'vt/GoogleTagManager/Application/views/ga4/add_payment_info.tpl', + 'add_shipping_info.tpl' => 'vt/GoogleTagManager/Application/views/ga4/add_shipping_info.tpl', + 'ga4_add_to_cart.tpl' => 'vt/GoogleTagManager/Application/views/ga4/add_to_cart.tpl', + 'ga4_begin_checkout.tpl' => 'vt/GoogleTagManager/Application/views/ga4/begin_checkout.tpl', + 'ga4_generate_lead.tpl' => 'vt/GoogleTagManager/Application/views/ga4/generate_lead.tpl', + 'ga4_login.tpl' => 'vt/GoogleTagManager/Application/views/ga4/login.tpl', + 'ga4_purchase.tpl' => 'vt/GoogleTagManager/Application/views/ga4/purchase.tpl', + 'ga4_remove_from_cart.tpl' => 'vt/GoogleTagManager/Application/views/ga4/remove_from_cart.tpl', + 'ga4_search.tpl' => 'vt/GoogleTagManager/Application/views/ga4/search.tpl', + 'ga4_select_content.tpl' => 'vt/GoogleTagManager/Application/views/ga4/select_content.tpl', + 'ga4_select_item.tpl' => 'vt/GoogleTagManager/Application/views/ga4/select_item.tpl', + 'ga4_select_promotion.tpl' => 'vt/GoogleTagManager/Application/views/ga4/select_promotion.tpl', + 'ga4_sign_up.tpl' => 'vt/GoogleTagManager/Application/views/ga4/sign_up.tpl', + 'ga4_view_cart.tpl' => 'vt/GoogleTagManager/Application/views/ga4/view_cart.tpl', + 'ga4_view_item.tpl' => 'vt/GoogleTagManager/Application/views/ga4/view_item.tpl', + 'ga4_view_item_list.tpl' => 'vt/GoogleTagManager/Application/views/ga4/view_item_list.tpl', + 'ga4_view_promotion.tpl' => 'vt/GoogleTagManager/Application/views/ga4/view_promotion.tpl', /* - + 'gtm_ua_impression' => 'vt/GoogleTagManager/Application/views/ua/impression.tpl' 'gtm_view_promotion.tpl' => 'vt/GoogleTagManager/Application/views/view_promotion.tpl', 'gtm_select_promotion.tpl' => 'vt/GoogleTagManager/Application/views/select_promotion.tpl', 'gtm_begin_checkout.tpl' => 'vt/GoogleTagManager/Application/views/begin_checkout.tpl', */ ], - 'blocks' => [ + 'blocks' => [ // tag manager js [ 'template' => 'layout/base.tpl', - 'block' => 'head_meta_robots', - 'file' => '/Application/views/blocks/_gtm_js.tpl' + 'block' => 'head_meta_robots', + 'file' => '/Application/views/blocks/_gtm_js.tpl' ], // tag manager nojs [ 'template' => 'layout/base.tpl', - 'block' => 'theme_svg_icons', - 'file' => '/Application/views/blocks/_gtm_nojs.tpl' + 'block' => 'theme_svg_icons', + 'file' => '/Application/views/blocks/_gtm_nojs.tpl' ], // add to cart [ 'template' => 'layout/header.tpl', - 'block' => 'header_main', - 'file' => '/Application/views/blocks/add_to_cart.tpl' + 'block' => 'header_main', + 'file' => '/Application/views/blocks/add_to_cart.tpl' ], - // impressions + // widget_product_list [ - 'template' => 'widget/product/listitem_grid.tpl', - 'block' => 'widget_product_listitem_grid', - 'file' => '/Application/views/blocks/impression.tpl' - ], - [ - 'template' => 'widget/product/listitem_infogrid.tpl', - 'block' => 'widget_product_listitem_infogrid', - 'file' => '/Application/views/blocks/impression.tpl' - ], - [ - 'template' => 'widget/product/listitem_line.tpl', - 'block' => 'widget_product_listitem_line', - 'file' => '/Application/views/blocks/impression.tpl' + 'template' => 'widget/product/list.tpl', + 'block' => 'widget_product_list', + 'file' => '/Application/views/blocks/widget_product_list.tpl' ], // details [ 'template' => 'page/details/inc/productmain.tpl', - 'block' => 'details_productmain_title', - 'file' => '/Application/views/blocks/detail.tpl' + 'block' => 'details_productmain_title', + 'file' => '/Application/views/blocks/detail.tpl' ], // checkout [ 'template' => 'page/checkout/basket.tpl', - 'block' => 'checkout_basket_main', - 'file' => '/Application/views/blocks/checkout_s1.tpl' + 'block' => 'checkout_basket_main', + 'file' => '/Application/views/blocks/checkout_s1.tpl' ], [ 'template' => 'form/user_checkout_change.tpl', - 'block' => 'user_checkout_change', - 'file' => '/Application/views/blocks/checkout_s2.tpl' + 'block' => 'user_checkout_change', + 'file' => '/Application/views/blocks/checkout_s2.tpl' ], [ 'template' => 'form/user_checkout_register.tpl', - 'block' => 'user_checkout_register', - 'file' => '/Application/views/blocks/checkout_s2.tpl' + 'block' => 'user_checkout_register', + 'file' => '/Application/views/blocks/checkout_s2.tpl' ], [ 'template' => 'form/user_checkout_noregister.tpl', - 'block' => 'user_checkout_noregister', - 'file' => '/Application/views/blocks/checkout_s2.tpl' + 'block' => 'user_checkout_noregister', + 'file' => '/Application/views/blocks/checkout_s2.tpl' ], [ 'template' => 'page/checkout/payment.tpl', - 'block' => 'checkout_payment_main', - 'file' => '/Application/views/blocks/checkout_s3.tpl' + 'block' => 'checkout_payment_main', + 'file' => '/Application/views/blocks/checkout_s3.tpl' ], [ 'template' => 'page/checkout/order.tpl', - 'block' => 'checkout_order_main', - 'file' => '/Application/views/blocks/checkout_s4.tpl' + 'block' => 'checkout_order_main', + 'file' => '/Application/views/blocks/checkout_s4.tpl' ], [ 'template' => 'page/checkout/thankyou.tpl', - 'block' => 'checkout_thankyou_main', - 'file' => '/Application/views/blocks/checkout_s5.tpl' + 'block' => 'checkout_thankyou_main', + 'file' => '/Application/views/blocks/checkout_s5.tpl' ] ], - 'settings' => [ + 'settings' => [ [ - 'group' => 'vt_gtm_settings', - 'name' => 'vt_gtm_containerid', - 'type' => 'str', - 'value' => 'GTM-', + 'group' => 'vt_gtm_settings', + 'name' => 'vt_gtm_sContainerID', + 'type' => 'str', + 'value' => 'GTM-', 'position' => 0 ], [ - 'group' => 'vt_gtm_settings', - 'name' => 'vt_gtm_enable_ga4', - 'type' => 'bool', - 'value' => true, + 'group' => 'vt_gtm_settings', + 'name' => 'vt_gtm_blGA4enabled', + 'type' => 'bool', + 'value' => true, 'position' => 1 ], [ - 'group' => 'vt_gtm_settings', - 'name' => 'vt_gtm_enable_ua', - 'type' => 'bool', - 'value' => true, + 'group' => 'vt_gtm_settings', + 'name' => 'vt_gtm_blUAenabled', + 'type' => 'bool', + 'value' => true, 'position' => 2 ], [ - 'group' => 'vt_gtm_settings', - 'name' => 'vt_gtm_mpapisecret', - 'type' => 'str', - 'value' => '', + 'group' => 'vt_gtm_settings', + 'name' => 'vt_gtm_sMpapisecret', + 'type' => 'str', + 'value' => '', 'position' => 3 ], [ - 'group' => 'vt_gtm_settings', - 'name' => 'vt_gtm_promotionlistids', - 'type' => 'arr', - 'value' => [], + 'group' => 'vt_gtm_settings', + 'name' => 'vt_gtm_aPromotionlistIDs', + 'type' => 'arr', + 'value' => [], 'position' => 4 + ], + [ + 'group' => 'vt_gtm_settings', + 'name' => 'vt_gtm_blEnableDebug', + 'type' => 'bool', + 'value' => false, + 'position' => 999 ] + ] ]; \ No newline at end of file diff --git a/thumbnail.png b/thumbnail.png new file mode 100755 index 0000000000000000000000000000000000000000..ecde9d2dca2a8a5ee4ed5821c915a085490e6bca GIT binary patch literal 31399 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 z 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