Skip to content

Commit

Permalink
Basic compatibility with Hyva
Browse files Browse the repository at this point in the history
  • Loading branch information
jissereitsma committed Dec 13, 2022
1 parent a4e1233 commit 2856f6e
Show file tree
Hide file tree
Showing 8 changed files with 154 additions and 34 deletions.
6 changes: 0 additions & 6 deletions view/frontend/layout/catalog_category_view.xml
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,5 @@
<argument name="data_layer" xsi:type="object">Yireo\GoogleTagManager2\ViewModel\DataLayer</argument>
</arguments>
</block>

<!--
<referenceBlock name="yireo_googletagmanager2.product-details">
<block template="Yireo_Example::additional-product-details.phtml"/>
</referenceBlock>
-->
</body>
</page>
47 changes: 30 additions & 17 deletions view/frontend/layout/default.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@
<body>
<referenceBlock name="head.additional">
<block
name="yireo_googletagmanager2.script"
template="Yireo_GoogleTagManager2::script.phtml"
ifconfig="googletagmanager2/settings/enabled"
name="yireo_googletagmanager2.script"
template="Yireo_GoogleTagManager2::script.phtml"
ifconfig="googletagmanager2/settings/enabled"
>
<arguments>
<argument name="config" xsi:type="object">Yireo\GoogleTagManager2\Config\Config</argument>
Expand All @@ -25,9 +25,9 @@

<referenceContainer name="after.body.start">
<block
name="yireo_googletagmanager2.iframe"
template="Yireo_GoogleTagManager2::iframe.phtml"
ifconfig="googletagmanager2/settings/enabled"
name="yireo_googletagmanager2.iframe"
template="Yireo_GoogleTagManager2::iframe.phtml"
ifconfig="googletagmanager2/settings/enabled"
>
<arguments>
<argument name="config" xsi:type="object">Yireo\GoogleTagManager2\Config\Config</argument>
Expand All @@ -37,9 +37,9 @@

<container name="yireo_googletagmanager2.data-layer.container" after="before.body.end">
<block
name="yireo_googletagmanager2.data-layer"
template="Yireo_GoogleTagManager2::data-layer.phtml"
ifconfig="googletagmanager2/settings/enabled"
name="yireo_googletagmanager2.data-layer"
template="Yireo_GoogleTagManager2::data-layer.phtml"
ifconfig="googletagmanager2/settings/enabled"
>
<arguments>
<argument name="data_layer_view_model" xsi:type="object">
Expand All @@ -57,24 +57,37 @@
<item name="page_type" xsi:type="object">Yireo\GoogleTagManager2\DataLayer\Tag\PageType</item>
<item name="page_path" xsi:type="object">Yireo\GoogleTagManager2\DataLayer\Tag\PagePath</item>
<item name="page_title" xsi:type="object">Yireo\GoogleTagManager2\DataLayer\Tag\PageTitle</item>
<item name="virtual_page" xsi:type="object">Yireo\GoogleTagManager2\DataLayer\Tag\Page\VirtualPage</item>
<item name="breadcrumb" xsi:type="object">Yireo\GoogleTagManager2\DataLayer\Tag\Page\Breadcrumbs</item>
<item name="virtual_page" xsi:type="object">
Yireo\GoogleTagManager2\DataLayer\Tag\Page\VirtualPage
</item>
<item name="breadcrumb" xsi:type="object">
Yireo\GoogleTagManager2\DataLayer\Tag\Page\Breadcrumbs
</item>
<item name="user" xsi:type="array">
<item name="has_transacted" xsi:type="boolean">false</item>
</item>
</argument>
</arguments>
<block
name="yireo_googletagmanager2.data-layer-debugging"
as="debugging"
template="Yireo_GoogleTagManager2::luma/data-layer-debugging.phtml"
ifconfig="googletagmanager2/settings/debug"
/>
</block>

<block
name="yireo_googletagmanager2.script-additions"
template="Yireo_GoogleTagManager2::luma/script-additions.phtml"
ifconfig="googletagmanager2/settings/enabled"
after="yireo_googletagmanager2.data-layer"
name="yireo_googletagmanager2.script-additions"
template="Yireo_GoogleTagManager2::luma/script-additions.phtml"
ifconfig="googletagmanager2/settings/enabled"
after="yireo_googletagmanager2.data-layer"
>
<arguments>
<argument name="data_layer_view_model" xsi:type="object">Yireo\GoogleTagManager2\ViewModel\DataLayer</argument>
<argument name="commons_view_model" xsi:type="object">Yireo\GoogleTagManager2\ViewModel\Commons</argument>
<argument name="data_layer_view_model" xsi:type="object">
Yireo\GoogleTagManager2\ViewModel\DataLayer
</argument>
<argument name="commons_view_model" xsi:type="object">Yireo\GoogleTagManager2\ViewModel\Commons
</argument>
</arguments>
</block>
</container>
Expand Down
23 changes: 23 additions & 0 deletions view/frontend/layout/hyva_default.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?xml version="1.0"?>
<!--
/**
* GoogleTagManager2 plugin for Magento
*
* @author Yireo (https://www.yireo.com/)
* @copyright Copyright 2022 Yireo (https://www.yireo.com/)
* @license Open Source License (OSL v3)
*/
-->
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceContainer name="after.body.start">
<block name="yireo_googletagmanager2.logger-script"
template="Yireo_GoogleTagManager2::hyva/script-logger.phtml"/>
</referenceContainer>
<referenceBlock name="yireo_googletagmanager2.data-layer-debugging"
template="Yireo_GoogleTagManager2::hyva/data-layer-debugging.phtml"/>
<referenceBlock name="yireo_googletagmanager2.script-additions"
template="Yireo_GoogleTagManager2::hyva/script-additions.phtml"/>
</body>
</page>
12 changes: 1 addition & 11 deletions view/frontend/templates/data-layer.phtml
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,8 @@ $dataLayerEventsJsonChunks = $dataLayerViewModel->getDataLayerEventsAsJsonChunks
<script>
window.dataLayer = window.dataLayer || [];
window.dataLayer.push(<?= /* @noEscape */ $dataLayerJson ?>);
<?php if ($config->isDebug()): ?>
require(['yireoGoogleTagManagerLogger'], function (logger) {
logger('initial state (page)', <?= /* @noEscape */ $dataLayerJson ?>);
});
<?php endif; ?>

<?php foreach ($dataLayerEventsJsonChunks as $dataLayerEventsJsonChunk): ?>
<?php if ($config->isDebug()): ?>
require(['yireoGoogleTagManagerLogger'], function (logger) {
logger('event (page)', <?= /* @noEscape */ $dataLayerEventsJsonChunk ?>);
});
<?php endif; ?>
window.dataLayer.push(<?= /* @noEscape */ $dataLayerEventsJsonChunk ?>);
<?php endforeach; ?>
</script>
<?= $block->getChildBlock('debugging')->setData(['data_layer_view_model' => $dataLayerViewModel])->toHtml() ?>
20 changes: 20 additions & 0 deletions view/frontend/templates/hyva/data-layer-debugging.phtml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php declare(strict_types=1);

use Magento\Framework\View\Element\Template;
use Yireo\GoogleTagManager2\Config\Config;
use Yireo\GoogleTagManager2\ViewModel\DataLayer;

/** @var DataLayer $dataLayerViewModel */
/** @var Config $config */
/** @var Template $block */
$config = $block->getConfig();
$dataLayerViewModel = $block->getDataLayerViewModel();
$dataLayerJson = $dataLayerViewModel->getDataLayerAsJson();
$dataLayerEventsJsonChunks = $dataLayerViewModel->getDataLayerEventsAsJsonChunks();
?>
<script>
logger('initial state (page)', <?= /* @noEscape */ $dataLayerJson ?>);
<?php foreach ($dataLayerEventsJsonChunks as $dataLayerEventsJsonChunk): ?>
logger('event (page)', <?= /* @noEscape */ $dataLayerEventsJsonChunk ?>);
<?php endforeach; ?>
</script>
45 changes: 45 additions & 0 deletions view/frontend/templates/hyva/script-additions.phtml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<?php declare(strict_types=1);

/**
* GoogleTagManager2 plugin for Magento
*
* @author Yireo (http://www.yireo.com/)
* @copyright Copyright (c) 2019 Yireo (http://www.yireo.com/)
* @license Open Software License
*/

use Magento\Framework\View\Element\Template;
use Yireo\GoogleTagManager2\ViewModel\Commons;

/** @var Template $block */
/** @var Commons $commons */
$commons = $block->getCommonsViewModel();

// @todo: rewrite Yireo_GoogleTagManager2/js/product/clicks
// @todo: rewrite Yireo_GoogleTagManager2/js/generic
?>
<script>
document.querySelector('.product-items a.product').addEventListener('click', function(event) {
const debugClicks = YIREO_GOOGLETAGMANAGER2_DEBUG_CLICKS || false;
const $parent = document.querySelector(this).parent();
const regex = /_(\d+)$/;
const matches = $parent.attr('id').match(regex);
const productId = matches[1];
const productData = window['YIREO_GOOGLETAGMANAGER2_PRODUCT_DATA_ID_' + productId] || {};
productData.item_id = productId;

const gtmData = {
'event': 'select_item',
'ecommerce': {
'items': [productData]
}
}

logger('page event "select_item" (js)', gtmData);
dataLayer.push(gtmData);

if (debugClicks && confirm("Press to continue with redirect") === false) {
event.preventDefault();
}
});
</script>
13 changes: 13 additions & 0 deletions view/frontend/templates/hyva/script-logger.phtml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php declare(strict_types=1);
?>
<script>
function logger(...args) {
const debug = window.YIREO_GOOGLETAGMANAGER2_DEBUG || false;
if (false === debug) {
return;
}

var css = 'color:white; background-color:green; padding:1px;'
console.log('%cYireo_GoogleTagManager2', css, ...args);
}
</script>
22 changes: 22 additions & 0 deletions view/frontend/templates/luma/data-layer-debugging.phtml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php declare(strict_types=1);

use Magento\Framework\View\Element\Template;
use Yireo\GoogleTagManager2\ViewModel\DataLayer;

/** @var DataLayer $dataLayerViewModel */
/** @var Template $block */
$dataLayerViewModel = $block->getDataLayerViewModel();
$dataLayerJson = $dataLayerViewModel->getDataLayerAsJson();
$dataLayerEventsJsonChunks = $dataLayerViewModel->getDataLayerEventsAsJsonChunks();
?>
<script>
require(['yireoGoogleTagManagerLogger'], function (logger) {
logger('initial state (page)', <?= /* @noEscape */ $dataLayerJson ?>);
});

<?php foreach ($dataLayerEventsJsonChunks as $dataLayerEventsJsonChunk): ?>
require(['yireoGoogleTagManagerLogger'], function (logger) {
logger('event (page)', <?= /* @noEscape */ $dataLayerEventsJsonChunk ?>);
});
<?php endforeach; ?>
</script>

0 comments on commit 2856f6e

Please sign in to comment.