Skip to content

Commit 3367cd4

Browse files
authored
Merge pull request #14 from magefan/Server-side-tracking-v2
Server-side-tracking-v2
2 parents 12807f2 + 1a141bb commit 3367cd4

File tree

3 files changed

+74
-0
lines changed

3 files changed

+74
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?php
2+
/**
3+
* Copyright © Magefan ([email protected]). All rights reserved.
4+
* Please visit Magefan.com for license details (https://magefan.com/end-user-license-agreement).
5+
*/
6+
7+
declare(strict_types=1);
8+
9+
namespace Magefan\GoogleTagManager\Api\DataLayer;
10+
11+
use Magento\Framework\Session\SessionManager as MagentoSessionManager;
12+
13+
interface SessionManagerInterface
14+
{
15+
/**
16+
* @param MagentoSessionManager $session
17+
* @param array $data
18+
* @return void
19+
*/
20+
public function push(MagentoSessionManager $session, array $data): void;
21+
22+
/**
23+
* Get GTM datalayer
24+
*
25+
* @param MagentoSessionManager $order
26+
* @return array
27+
*/
28+
public function get(MagentoSessionManager $session): array;
29+
30+
31+
}

Model/DataLayer/SessionManager.php

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
/**
3+
* Copyright © Magefan ([email protected]). All rights reserved.
4+
* Please visit Magefan.com for license details (https://magefan.com/end-user-license-agreement).
5+
*/
6+
7+
namespace Magefan\GoogleTagManager\Model\DataLayer;
8+
9+
use Magefan\GoogleTagManager\Api\DataLayer\SessionManagerInterface;
10+
use Magento\Framework\Session\SessionManager as MagentoSessionManager;
11+
12+
/**
13+
* Abstract management model
14+
*/
15+
class SessionManager implements SessionManagerInterface
16+
{
17+
18+
/**
19+
* @param MagentoSessionManager $session
20+
* @param array $data
21+
* @return void
22+
*/
23+
public function push(MagentoSessionManager $session, array $data): void
24+
{
25+
if ($data) {
26+
$dataLayers = $session->getMfDataLayers() ?: [];
27+
$dataLayers[] = $data;
28+
$session->setMfDataLayers($dataLayers);
29+
}
30+
}
31+
32+
/**
33+
* @param MagentoSessionManager $order
34+
* @return array
35+
*/
36+
public function get(MagentoSessionManager $session): array
37+
{
38+
$data = $session->getMfDataLayers() ?: [];
39+
$session->setMfDataLayers(null);
40+
return $data;
41+
}
42+
}

etc/di.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
<preference for="Magefan\GoogleTagManager\Api\DataLayer\Cart\ItemInterface" type="Magefan\GoogleTagManager\Model\DataLayer\Cart\Item" />
1414
<preference for="Magefan\GoogleTagManager\Api\DataLayer\Order\ItemInterface" type="Magefan\GoogleTagManager\Model\DataLayer\Order\Item" />
1515
<preference for="Magefan\GoogleTagManager\Api\DataLayer\Product\ItemInterface" type="Magefan\GoogleTagManager\Model\DataLayer\Product\Item" />
16+
<preference for="Magefan\GoogleTagManager\Api\DataLayer\SessionManagerInterface" type="Magefan\GoogleTagManager\Model\DataLayer\SessionManager" />
1617
<type name="Magefan\GoogleTagManager\Model\DataLayer\Purchase">
1718
<plugin name="Plugin_Magefan_GoogleTagManager_Model_DataLayer_Purchase" type="Magefan\GoogleTagManager\Plugin\Magefan\GoogleTagManager\Model\DataLayer\Purchase" sortOrder="10" disabled="false"/>
1819
</type>

0 commit comments

Comments
 (0)