Compare commits

..

11 Commits
2.2.1 ... 1.3.1

Author SHA1 Message Date
4222c947a9 bump versions and changelog 2023-03-17 14:49:49 +01:00
d8fa06233b adjust translation 2023-03-17 14:49:28 +01:00
4e0988307a bump readme files 2023-03-17 14:03:53 +01:00
0e55c3e38f add: Aggrosoft-Cookie-Consent compatibility 2023-03-17 10:59:50 +01:00
13df965a03 bug-fix: wrong function for pageview on thankyou page 2023-03-17 08:58:15 +01:00
1ff6f0159f rm overblowing files 2023-03-16 10:59:39 +01:00
707e389f54 bump version 2023-02-22 14:21:24 +01:00
98533cf7f7 add special price formatting 2023-02-22 14:19:38 +01:00
25234abfd8 bump version 2023-02-01 15:42:59 +01:00
667b48ac4b rm unnecessary hint 2023-02-01 15:33:52 +01:00
5e358fc684 add own cookie-check method; rm unnecessary help-text 2023-02-01 15:32:28 +01:00
28 changed files with 94 additions and 284 deletions

View File

@ -1,13 +1,16 @@
<?php <?php
/** /**
* For the full copyright and license information, please view the LICENSE * This Software is the property of Data Development and is protected
* file that was distributed with this source code. * by copyright law - it is NOT Freeware.
* * Any unauthorized use of this software without a valid license
* https://www.d3data.de * is a violation of the license agreement and will be prosecuted by
* civil and criminal law.
* http://www.shopmodule.com
* *
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch) * @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com> * @author D3 Data Development - Daniel Seifert <support@shopmodule.com>
* @link https://www.oxidmodule.com * @link http://www.oxidmodule.com
*/ */
$style = '<style type="text/css"> $style = '<style type="text/css">
@ -30,7 +33,6 @@ $aLang = [
// for cookie manager settings // for cookie manager settings
'SHOP_MODULE_GROUP_d3_gtm_settings_cookiemanager' => 'Cookie Manager Einstellungen', 'SHOP_MODULE_GROUP_d3_gtm_settings_cookiemanager' => 'Cookie Manager Einstellungen',
'SHOP_MODULE_d3_gtm_settings_hasOwnCookieManager' => 'Eigenen Cookie Manager nutzen? 'SHOP_MODULE_d3_gtm_settings_hasOwnCookieManager' => 'Cookie Manager nutzen?',
<strong style="color: red">Hinweis (Fragezeichen) lesen!</strong>', 'SHOP_MODULE_d3_gtm_settings_cookieName' => 'CookieID',
'SHOP_MODULE_d3_gtm_settings_cookieName' => 'Cookie-Name',
]; ];

View File

@ -1,66 +0,0 @@
[{$smarty.block.parent}]
[{*
[{strip}]
[{assign var="gtmProduct" value=$oView->getProduct()}]
[{assign var="gtmCategory" value=$gtmProduct->getCategory()}]
[{assign var="gtmManufacturer" value=$gtmProduct->getManufacturer()}]
[{if !$head }]
[{assign var=$head value=$oView->getViewParameter('head')}]
[{/if}]
<script>
var gtmItem = {
'id': '[{$gtmProduct->oxarticles__oxartnum->value}]',
'item_id': '[{$gtmProduct->oxarticles__oxartnum->value}]',
'name': '[{$gtmProduct->oxarticles__oxtitle->value}]',
'item_name': '[{$gtmProduct->oxarticles__oxtitle->value}]',
'variant': '[{if $gtmProduct->oxarticles__oxvarselect->value}][{$gtmProduct->oxarticles__oxvarselect->value}][{/if}]',
'item_variant': '[{if $gtmProduct->oxarticles__oxvarselect->value}][{$gtmProduct->oxarticles__oxvarselect->value}][{/if}]',
'brand': '[{if $gtmManufacturer}][{$gtmManufacturer->oxmanufacturers__oxtitle->value}][{/if}]',
'item_brand': '[{if $gtmManufacturer}][{$gtmManufacturer->oxmanufacturers__oxtitle->value}][{/if}]',
'price': [{$gtmProduct->oxarticles__oxprice->value}],
'category': '[{if $gtmCategory}][{$gtmCategory->getLink()|parse_url:5|ltrim:"/"|rtrim:"/"}][{else}]no category[{/if}]',
'item_category': '[{if $gtmCategory}][{$gtmCategory->getLink()|parse_url:5|ltrim:"/"|rtrim:"/"}][{else}]no category[{/if}]',
[{if $listId == 'productList' || $listId == 'categoryList'}]
/* category list */
'list': '[{$listId}]',
'item_list_id': '[{$listId}]',
'item_list_name': '[{$head}]',
[{elseif $listId}]
/* category list */
'list': '[{$listId}]',
'promotion_id': '[{$listId}]',
'promotion_name': '[{$head}]',
[{/if}]
'position': [{$iIndex}],
'index': [{$iIndex}],
'quantity': '1'
};
/* UA */
dataLayer.push({ ecommerce: null });
dataLayer.push({
'event': 'UA_event',
'event_name': 'Impression',
'ecommerce': {
'currencyCode': '[{$currency->name}]',
'impressions': [gtmItem]
}
});
/* GA4 */
dataLayer.push({ ecommerce: null });
dataLayer.push({
'event': 'GA4_event',
'event_name': 'view_item_list',
'ecommerce': {
'items': [gtmItem]
}
});
</script>
[{/strip}]
*}]

View File

@ -1,5 +0,0 @@
[{if $oxcmp_basket->isNewItemAdded() && $smarty.session._newitem}]
<!-- [{$smarty.session._newitem|@var_dump}] -->
[{* include file="ga4_add_to_cart.tpl" gtmProduct=$smarty.session._newitem *}]
[{/if}]
[{$smarty.block.parent}]

View File

@ -4,6 +4,8 @@
[{assign var='gtmCartArticles' value=$oView->getBasketArticles()}] [{assign var='gtmCartArticles' value=$oView->getBasketArticles()}]
[{strip}][{capture assign=d3_ga4_view_cart}] [{strip}][{capture assign=d3_ga4_view_cart}]
let iPrice = "[{oxprice price=$oxcmp_basket->getPrice()}]";
dataLayer.push({"event": null, "eventLabel": null, "ecommerce": null}); /* Clear the previous ecommerce object. */ dataLayer.push({"event": null, "eventLabel": null, "ecommerce": null}); /* Clear the previous ecommerce object. */
dataLayer.push({ dataLayer.push({
'event': 'view_cart', 'event': 'view_cart',
@ -11,7 +13,7 @@
'ecommerce': { 'ecommerce': {
'actionField': "step: 1", 'actionField': "step: 1",
'currency': "[{$currency->name}]", 'currency': "[{$currency->name}]",
'value': [{oxprice price=$oxcmp_basket->getPrice()}], 'value': iPrice.replace("€", ""),
'items': [ 'items': [
[{foreach from=$oxcmp_basket->getContents() item=basketitem name=gtmCartContents key=basketindex}] [{foreach from=$oxcmp_basket->getContents() item=basketitem name=gtmCartContents key=basketindex}]
[{assign var='_price' value=$basketitem->getUnitPrice()}] [{assign var='_price' value=$basketitem->getUnitPrice()}]

View File

@ -1,18 +0,0 @@
[{strip}]
<script>
dataLayer.push({"event": null, "eventLabel": null, "ecommerce": null}); /* Clear the previous ecommerce object. */
dataLayer.push({
'event':'ee.checkout',
'eventLabel':'Checkout Step 2',
'ecommerce': {
'checkout': {
'actionField': {
'step': 2,
'option':'[{oxmultilang ident="vt_GTM_EE_LOGINOPTION"|cat:$oView->getLoginOption()}]'
}
}
}
});
</script>
[{/strip}]
[{$smarty.block.parent}]

View File

@ -1,9 +0,0 @@
<script>
dataLayer.push({"event": null, "eventLabel": null, "ecommerce": null}); /* Clear the previous ecommerce object. */
dataLayer.push({
'event': 'ee.checkout',
'eventLabel': 'Checkout Step 3',
'ecommerce': {'checkout': {'actionField': {'step': 3}}}
});
</script>
[{$smarty.block.parent}]

View File

@ -1,9 +0,0 @@
<script>
dataLayer.push({"event": null, "eventLabel": null, "ecommerce": null}); /* Clear the previous ecommerce object. */
dataLayer.push({
"event": "ee.checkout",
'eventLabel': 'Checkou Step 4',
"ecommerce": {"checkout": {"actionField": {"step": 4}}}
});
</script>
[{$smarty.block.parent}]

View File

@ -1,6 +1,5 @@
[{$smarty.block.parent}] [{$smarty.block.parent}]
[{assign var="gtmProduct" value=$oView->getProduct()}] [{assign var="gtmProduct" value=$oView->getProduct()}]
[{if $gtmProduct}]
[{assign var="gtmCategory" value=$gtmProduct->getCategory()}] [{assign var="gtmCategory" value=$gtmProduct->getCategory()}]
[{assign var="gtmManufacturer" value=$gtmProduct->getManufacturer()}] [{assign var="gtmManufacturer" value=$gtmProduct->getManufacturer()}]
<script> <script>
@ -12,12 +11,12 @@
'currencyCode': '[{$currency->name}]', 'currencyCode': '[{$currency->name}]',
'impressions': [ 'impressions': [
{ {
'name': '[{$gtmProduct->getFieldData('oxtitle')}]', 'name': '[{$gtmProduct->oxarticles__oxtitle->value}]',
'id': '[{$gtmProduct->getFieldData('oxartnum')}]', 'id': '[{$gtmProduct->oxarticles__oxartnum->value}]',
'price': [{$gtmProduct->getFieldData('oxprice')}], 'price': [{$gtmProduct->oxarticles__oxprice->value}],
'brand': '[{if $gtmManufacturer}][{$gtmManufacturer->getFieldData('oxtitle')}][{/if}]', 'brand': '[{if $gtmManufacturer}][{$gtmManufacturer->oxmanufacturers__oxtitle->value}][{/if}]',
'category': '[{if $gtmCategory}][{$gtmCategory->getLink()|parse_url:5|ltrim:"/"|rtrim:"/"}][{else}]-[{/if}]', 'category': '[{if $gtmCategory}][{$gtmCategory->getLink()|parse_url:5|ltrim:"/"|rtrim:"/"}][{else}]-[{/if}]',
'variant': '[{if $gtmProduct->getFieldData('oxvarselect')}][{$gtmProduct->getFieldData('oxvarselect')}][{/if}]' 'variant': '[{if $gtmProduct->oxarticles__oxvarselect->value}][{$gtmProduct->oxarticles__oxvarselect->value}][{/if}]'
[{if $list && $position}], [{if $list && $position}],
'list': '[{$list}]', 'list': '[{$list}]',
'position': [{"_"|str_replace:"":$position}] 'position': [{"_"|str_replace:"":$position}]
@ -30,8 +29,7 @@
<!-- <!--
sWidgetType [{$sWidgetType}] | [{$oView->getViewParameter('sWidgetType')}] sWidgetType [{$sWidgetType}] | [{$oView->getViewParameter('sWidgetType')}]
sListType [{$sListType}] | [{$oView->getViewParameter('sListType')}] sListType [{$sListType}] | [{$oView->getViewParameter('sListType')}]
iIndex [{$iIndex}] | [{$oView->getViewParameter('iIndex')}] iIndex [{$iIndex}] | [{$oView->getIndex()}]
listId [{$listId}] | [{$oView->getViewParameter('listId')}] listId [{$listId}] | [{$oView->getViewParameter('listId')}]
testid [{$testid}] | [{$oView->getViewParameter('testid')}] testid [{$testid}] | [{$oView->getViewParameter('testid')}]
--> -->
[{/if}]

View File

@ -1,36 +0,0 @@
[{strip}]
<script type="text/javascript">
window.dataLayer = window.dataLayer || [];
dataLayer.push({ ecommerce: null });
dataLayer.push({
[{assign var="oBasket" value=$order->getBasket()}]
[{assign var="iVat" value=0}]
'event':'purchase',
'ecommerce':{
'purchase':{
'actionField':{
'id': [{$order->getFieldData('oxordernr')}],
'ordernr': [{$order->getFieldData('oxtotalordersum')}],
'tax': [{$order->d3GetSumOrderVat()}],
'shipping': [{$order->getFieldData('oxdelcost')}],
'currency': "[{$order->getFieldData('oxcurrency')}]"
},
'products':[
[{foreach from=$order->getOrderArticles() item=listItem}]
[{assign var="orderArticle" value=$listItem->getArticle()}]
{
'item_id': "[{$listItem->getFieldData('oxartnum')}]",
'item_name': "[{$listItem->getFieldData('oxtitle')}]",
'currency': "[{$order->getFieldData('oxcurrency')}]",
'articleVat': [{$orderArticle->getArticleVat()}],
'price': [{$orderArticle->getBasePrice()}],
'quantity': [{$listItem->getFieldData('oxamount')}]
},
[{/foreach}]
]
}
}
});
</script>
[{/strip}]

View File

@ -1,26 +0,0 @@
[{strip}]
[{* variable $gtmProduct is passed from parent tempalte *}]
[{assign var="gtmCurrency" value=$oView->getActCurrency()}]
[{assign var="gtmManufacturer" value=$gtmProduct->getManufacturer()}]
[{assign var="gtmCategory" value=$gtmProduct->getCategory()}]
<script type="text/javascript">
dataLayer.push({ecommerce: null});
dataLayer.push({
'event':'GA4_event',
'event_name': 'view_item',
'ecommerce': {
'items': [
{
'item_id': '[{$gtmProduct->getFieldData("oxartnum")}]',
'item_name': '[{$gtmProduct->getFieldData("oxtitle")}]',
'item_variant': '[{if $gtmProduct->oxarticles__oxvarselect->value}][{$gtmProduct->oxarticles__oxvarselect->value}][{/if}]',
'price': [{$gtmProduct->oxarticles__oxprice->value|default:0}],
'item_brand': '[{if $gtmManufacturer}][{$gtmManufacturer->oxmanufacturers__oxtitle->value}][{/if}]',
'item_category': '[{if $gtmCategory}][{$gtmCategory->getLink()|parse_url:5|ltrim:"/"|rtrim:"/"}][{else}]-[{/if}]',
'quantity': '1'
}
]
}
});
</script>
[{/strip}]

View File

@ -4,28 +4,28 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [2.2.1](https://git.d3data.de/D3Public/GoogleAnalytics4/compare/2.1.1...2.2.1) - 2023-02-21 ## [1.3.1](https://git.d3data.de/D3Public/GoogleAnalytics4/compare/1.2.1...1.3.1) - 2023-03-17
### Added ### Added
- cookie handling - Aggrosoft-Cookie-Consent compatibility
## [2.1.1](https://git.d3data.de/D3Public/GoogleAnalytics4/compare/2.1...2.1.1) - 2023-01-27
### Fixed ### Fixed
- add missing class import - wrong function for pageview on thankyou page
## [2.1](https://git.d3data.de/D3Public/GoogleAnalytics4/compare/2.0...2.1) - 2023-01-27 ## [1.2.1](https://git.d3data.de/D3Public/GoogleAnalytics4/compare/1.2...1.2.1) - 2023-02-22
### Added ### Fixed
- block section for add_to_basket js - price formatting in view_cart
- template block order positions
## [2.0](https://git.d3data.de/D3Public/GoogleAnalytics4/compare/1.1...2.0) - 2023-01-20 ## [1.2](https://git.d3data.de/D3Public/GoogleAnalytics4/compare/1.1...1.2) - 2023-02-01
### Added ### Added
- using of ContainerFactory in ViewConfig - own cookie-check-handler
## [1.1](https://git.d3data.de/D3Public/GoogleAnalytics4/compare/1.0...1.1) - 2023-01-27 ## [1.1](https://git.d3data.de/D3Public/GoogleAnalytics4/compare/1.0...1.1) - 2023-01-27
### Added ### Added
- block section for add_to_basket js - block section for add_to_basket js
- template block order positions - template block order positions
## [1.0](https://git.d3data.de/D3Public/GoogleAnalytics4/releases/tag/1.0) - 2023-01-20 ### Changed
- switched price formatting
## [1.0](https://git.d3data.de/D3Public/GoogleAnalytics4/compare/1.0...1.0) - 2023-01-20
### Added ### Added
- publication of app features - publication of app features

View File

@ -1,11 +1,11 @@
## Technische Doku # Technische Doku
### GA4 Events / Customizing ## GA4 Events / Customizing
FĂĽr alle implementierten GA4 Events existieren Templates unter `source/modules/d3/googleanalytics4/Application/views/ga4/`, dabei entspricht der Dateiname dem Eventnamen in GA4. FĂĽr alle implementierten GA4 Events existieren Templates unter `source/modules/d3/googleanalytics4/Application/views/ga4/`, dabei entspricht der Dateiname dem Eventnamen in GA4.
Die Einbindung dieser Event-Templates erfolgt über TPL-Blöcke unter `source/modules/d3/googleanalytics4/Application/views/blocks/`. Die Einbindung dieser Event-Templates erfolgt über TPL-Blöcke unter `source/modules/d3/googleanalytics4/Application/views/blocks/`.
*Hinweis: nicht alle templates sind bereits gefĂĽllt. WĂĽnschen Sie die Implementierung eines unausgefĂĽllten templates? *Hinweis: nicht alle templates sind bereits gefĂĽllt. WĂĽnschen Sie die Implementierung eines unausgefĂĽllten templates?
Kommen Sie auf uns zu unter https://www.d3data.de/ Kommen Sie auf uns zu unter https://www.d3data.de/
### Blöcke ## Blöcke
Für den geregelten Ablauf sind folgende Blöcke nötig: Für den geregelten Ablauf sind folgende Blöcke nötig:
- Suchergebnisse - Suchergebnisse
- Blockname: search_results - Blockname: search_results
@ -32,7 +32,7 @@ Für den geregelten Ablauf sind folgende Blöcke nötig:
- Datei: page/checkout/thankyou.tpl - Datei: page/checkout/thankyou.tpl
- GA4 Event: purchase - GA4 Event: purchase
### VerfĂĽgbare Datalayer Variablen ## VerfĂĽgbare Datalayer Variablen
FĂĽr die einfachste Ăśbersicht der enthaltenen Daten empfehle ich den Vorschau-Modus vom Google Tag Manager. 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: Bei jedem Seitenaufruf wird die Datenschicht mit einigen wenigen Infos erstellt, die man zum reinen Erfassen der Seitenaufrufe benötigt:
@ -44,8 +44,22 @@ Bei jedem Seitenaufruf wird die Datenschicht mit einigen wenigen Infos erstellt,
Alle fĂĽr Ecommerce Tracking relevanten Daten werden mit speziellen Ecommerce Events in die Datenschicht eingefĂĽgt. Alle fĂĽr Ecommerce Tracking relevanten Daten werden mit speziellen Ecommerce Events in die Datenschicht eingefĂĽgt.
### Cookie-Handling ## Cookie-Handling
Sie nutzen einen eigenen, als Modul im Shop installierten, Cookie-manager? Sie nutzen einen eigenen, als Modul im Shop installierten, Cookie-manager?
Dann tragen Sie in den Folgeeinstellungen unter "Cookie Manager Einstellungen", Dann tragen Sie in den Folgeeinstellungen unter "Cookie Manager Einstellungen",
die Cookie-ID des zugehörigen Cookies ein. Und aktivieren Sie diese Weiche, die Cookie-ID des zugehörigen Cookies ein.
indem Sie den Haken bei "Eigenen Cookie Manager nutzen?" setzen. Aktivieren Sie anschlieĂźend diese Weiche. Setzen Sie den Haken bei "Eigenen Cookie Manager nutzen?".
### UnterstĂĽtzung fĂĽr
- [aggrosoft - oxid-cookie-compliance](https://github.com/aggrosoft/oxid-cookie-compliance)
- https://github.com/aggrosoft/oxid-cookie-compliance
- die entsprechend gewählte Kategorie in den Moduleinstellungen des 'Google Analytics 4' unter
```Einstell. > Cookie Manager Einstellungen > Cookie-ID``` eintragen
- [Netensio - Cookie Consent Manager](https://www.netensio.de/oxid-eshop-module/cookie-consent-manager-fuer-oxid-eshop.html)
- Modul entsprechend konfigurieren
- CookieID des angelegten Cookies in den Moduleinstellungen des 'Google Analytics 4' unter
```Einstell. > Cookie Manager Einstellungen > Cookie-ID``` eintragen
- [OXID Cookie Management powered by usercentrics](https://docs.oxid-esales.com/modules/usercentrics/de/latest/einfuehrung.html)
- soweit ich weiĂź nichts weiter?

View File

@ -1,21 +1,20 @@
<?php <?php
/** /**
* For the full copyright and license information, please view the LICENSE * This Software is the property of Data Development and is protected
* file that was distributed with this source code. * by copyright law - it is NOT Freeware.
* * Any unauthorized use of this software without a valid license
* https://www.d3data.de * is a violation of the license agreement and will be prosecuted by
* * civil and criminal law.
* http://www.shopmodule.com
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch) * @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com> * @author D3 Data Development - Daniel Seifert <support@shopmodule.com>
* @link https://www.oxidmodule.com * @link http://www.oxidmodule.com
*/ */
namespace D3\GoogleAnalytics4\Modules\Core; namespace D3\GoogleAnalytics4\Modules\Core;
use OxidEsales\Eshop\Application\Controller\FrontendController; use OxidEsales\Eshop\Application\Controller\FrontendController;
use OxidEsales\Eshop\Core\Registry; use OxidEsales\Eshop\Core\Registry;
use OxidEsales\EshopCommunity\Internal\Container\ContainerFactory;
use OxidEsales\EshopCommunity\Internal\Framework\Module\Configuration\Bridge\ModuleSettingBridgeInterface;
class ViewConfig extends ViewConfig_parent class ViewConfig extends ViewConfig_parent
{ {
@ -27,10 +26,8 @@ class ViewConfig extends ViewConfig_parent
{ {
if ($this->sContainerId === null) if ($this->sContainerId === null)
{ {
$this->sContainerId = ContainerFactory::getInstance()
->getContainer() $this->sContainerId = $this->getConfig()->getConfigParam('d3_gtm_sContainerID');
->get(ModuleSettingBridgeInterface::class)
->get('d3_gtm_sContainerID', 'd3googleanalytics4');
} }
return $this->sContainerId; return $this->sContainerId;
} }
@ -48,6 +45,11 @@ class ViewConfig extends ViewConfig_parent
return true; return true;
} }
// Aggrosoft Cookie Consent
if (method_exists($this, "isCookieCategoryEnabled")) {
return $this->isCookieCategoryEnabled($sCookieID);
}
return false; return false;
} }
@ -57,10 +59,7 @@ class ViewConfig extends ViewConfig_parent
{ {
if ($this->blGA4enabled === null) if ($this->blGA4enabled === null)
{ {
$this->sContainerId = ContainerFactory::getInstance() $this->sContainerId = $this->getConfig()->getConfigParam('d3_gtm_blEnableGA4');
->getContainer()
->get(ModuleSettingBridgeInterface::class)
->get('d3_gtm_blEnableGA4', 'd3googleanalytics4');
} }
return $this->blGA4enabled; return $this->blGA4enabled;
@ -73,9 +72,10 @@ class ViewConfig extends ViewConfig_parent
$oConfig = Registry::getConfig(); $oConfig = Registry::getConfig();
$oView = $oConfig->getTopActiveView(); $oView = $oConfig->getTopActiveView();
/** @var FrontendController $oShop */ /** @var FrontendController $oShop */
$oUser = $oConfig->getUser(); $oUser = $oConfig->getUser();
$cl = $this->getTopActionClassName(); $cl = $this->getTopActiveClassName();
$aPageTypes = [ $aPageTypes = [
"content" => "cms", "content" => "cms",
"details" => "product", "details" => "product",
@ -86,6 +86,7 @@ class ViewConfig extends ViewConfig_parent
"payment" => "checkout", "payment" => "checkout",
"order" => "checkout", "order" => "checkout",
"thankyou" => "checkout", "thankyou" => "checkout",
"start" => "start",
]; ];
$dataLayer = [ $dataLayer = [

View File

@ -23,7 +23,7 @@ Dieses Paket erfordert einen mit Composer installierten OXID eShop in einer in d
Ă–ffnen Sie eine Kommandozeile und navigieren Sie zum Stammverzeichnis des Shops (Elternverzeichnis von source und vendor). FĂĽhren Sie den folgenden Befehl aus. Passen Sie die Pfadangaben an Ihre Installationsumgebung an. Ă–ffnen Sie eine Kommandozeile und navigieren Sie zum Stammverzeichnis des Shops (Elternverzeichnis von source und vendor). FĂĽhren Sie den folgenden Befehl aus. Passen Sie die Pfadangaben an Ihre Installationsumgebung an.
```bash ```bash
php composer require d3/google-analytics4:^2 php composer require d3/google-analytics4:^1
``` ```
Sofern nötig, bestätigen Sie bitte, dass Sie `package-name` erlauben, Code auszuführen. Sofern nötig, bestätigen Sie bitte, dass Sie `package-name` erlauben, Code auszuführen.
@ -77,5 +77,6 @@ Die vollständigen Copyright- und Lizenzinformationen entnehmen Sie bitte der [L
Zu diesem Modul haben beigetragen: Zu diesem Modul haben beigetragen:
- [Marat Bedoev](https://github.com/vanilla-thunder) - [Marat Bedoev](https://github.com/vanilla-thunder)
- [Christoph Stäblein [gn2]](https://github.com/reyneke-vosz)
Vielen Dank. Vielen Dank.

View File

@ -45,7 +45,7 @@
}, },
"require": { "require": {
"php": ">=7.1", "php": ">=7.1",
"oxid-esales/oxideshop-ce": "^6.5", "oxid-esales/oxideshop-ce": "v6.0 - 6.3",
"google/apiclient":" ^2.0" "google/apiclient":" ^2.0"
}, },
"autoload": { "autoload": {

View File

@ -17,7 +17,7 @@ $aModule = [
Die Entwicklung basiert auf einem Fork von Marat Bedoev - <a href='https://github.com/vanilla-thunder/oxid-module-gtm'>Github-Link</a> Die Entwicklung basiert auf einem Fork von Marat Bedoev - <a href='https://github.com/vanilla-thunder/oxid-module-gtm'>Github-Link</a>
", ",
'thumbnail' => 'thumbnail.png', 'thumbnail' => 'thumbnail.png',
'version' => '2.2.1', 'version' => '1.3.1',
'author' => 'Data Development (Inh.: Thomas Dartsch)', 'author' => 'Data Development (Inh.: Thomas Dartsch)',
'email' => 'support@shopmodule.com', 'email' => 'support@shopmodule.com',
'url' => 'https://www.oxidmodule.com/', 'url' => 'https://www.oxidmodule.com/',
@ -26,23 +26,9 @@ $aModule = [
], ],
'templates' => [ 'templates' => [
// GA4 events // GA4 events
'ga4_add_payment_info.tpl' => 'd3/googleanalytics4/Application/views/ga4/add_payment_info.tpl',
'add_shipping_info.tpl' => 'd3/googleanalytics4/Application/views/ga4/add_shipping_info.tpl',
'ga4_add_to_cart.tpl' => 'd3/googleanalytics4/Application/views/ga4/add_to_cart.tpl', 'ga4_add_to_cart.tpl' => 'd3/googleanalytics4/Application/views/ga4/add_to_cart.tpl',
'ga4_begin_checkout.tpl' => 'd3/googleanalytics4/Application/views/ga4/begin_checkout.tpl',
'ga4_generate_lead.tpl' => 'd3/googleanalytics4/Application/views/ga4/generate_lead.tpl',
'ga4_login.tpl' => 'd3/googleanalytics4/Application/views/ga4/login.tpl',
'ga4_purchase.tpl' => 'd3/googleanalytics4/Application/views/ga4/purchase.tpl',
'ga4_remove_from_cart.tpl' => 'd3/googleanalytics4/Application/views/ga4/remove_from_cart.tpl',
'ga4_search.tpl' => 'd3/googleanalytics4/Application/views/ga4/search.tpl', 'ga4_search.tpl' => 'd3/googleanalytics4/Application/views/ga4/search.tpl',
'ga4_select_content.tpl' => 'd3/googleanalytics4/Application/views/ga4/select_content.tpl',
'ga4_select_item.tpl' => 'd3/googleanalytics4/Application/views/ga4/select_item.tpl',
'ga4_select_promotion.tpl' => 'd3/googleanalytics4/Application/views/ga4/select_promotion.tpl',
'ga4_sign_up.tpl' => 'd3/googleanalytics4/Application/views/ga4/sign_up.tpl',
'ga4_view_cart.tpl' => 'd3/googleanalytics4/Application/views/ga4/view_cart.tpl',
'ga4_view_item.tpl' => 'd3/googleanalytics4/Application/views/ga4/view_item.tpl',
'ga4_view_item_list.tpl' => 'd3/googleanalytics4/Application/views/ga4/view_item_list.tpl', 'ga4_view_item_list.tpl' => 'd3/googleanalytics4/Application/views/ga4/view_item_list.tpl',
'ga4_view_promotion.tpl' => 'd3/googleanalytics4/Application/views/ga4/view_promotion.tpl',
], ],
'blocks' => [ 'blocks' => [
// tag manager js // tag manager js
@ -76,31 +62,6 @@ $aModule = [
'block' => 'checkout_basket_main', 'block' => 'checkout_basket_main',
'file' => '/Application/views/blocks/checkout_s1.tpl' 'file' => '/Application/views/blocks/checkout_s1.tpl'
], ],
[
'template' => 'form/user_checkout_change.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'
],
[
'template' => 'form/user_checkout_noregister.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'
],
[
'template' => 'page/checkout/order.tpl',
'block' => 'checkout_order_main',
'file' => '/Application/views/blocks/checkout_s4.tpl'
],
[ [
'template' => 'page/checkout/thankyou.tpl', 'template' => 'page/checkout/thankyou.tpl',
'block' => 'checkout_thankyou_main', 'block' => 'checkout_thankyou_main',