Version Notes
All basic features included.
- It can handle full page caching.
- Exception handling has been added.
- Removed empty objects and arrays; Removed duplicated subcategories.
- Added product data for products on category and search pages.
- Fixed issue where configurable products have multiple product entries, and incorrect prices, in the cart object.
- Added more data into digitalData object so websites can be debugged.
- Configurable products have each of their configurations listed under 'linkedProduct'.
- Fixed bug that was breaking some styling.
- Added 'pageName' attribute and fixed type of 'returningStatus' object.
- Tweaks to configuration panel and default values.
- List of all installed non-Magento extensions are exposed (for debug purposes)
- Products associated with a Grouped Product have been included.
- Minimum prices of grouped and bundled products can be extracted.
- Output of debug data can now be controlled through admin configuration panel.
Release Info
Developer | Muhammed Miah |
Extension | W3CDigitalDataLayerByTriggeredMessaging |
Version | 0.3.6 |
Comparing to | |
See all releases |
Code changes from version 0.3.5 to 0.3.6
- app/code/community/TriggeredMessaging/DigitalDataLayer/Model/Page/Observer.php +47 -23
- app/code/community/TriggeredMessaging/DigitalDataLayer/etc/config.xml +1 -0
- app/code/community/TriggeredMessaging/DigitalDataLayer/etc/system.xml +15 -0
- app/design/frontend/base/default/template/triggeredmessaging/digital_data_layer.phtml +1 -1
- package.xml +4 -4
@@ -332,6 +332,7 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
|
|
332 |
$user_id = $user->getEntityId();
|
333 |
$firstName = $user->getFirstname();
|
334 |
$lastName = $user->getLastname();
|
|
|
335 |
|
336 |
if ($this->_isConfirmation()) {
|
337 |
$orderId = $this->_getCheckoutSession()->getLastOrderId();
|
@@ -343,7 +344,6 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
|
|
343 |
$email = $user->getEmail();
|
344 |
}
|
345 |
|
346 |
-
// $this->_user['segment'] = array();
|
347 |
$this->_user['profile'] = array();
|
348 |
|
349 |
$profile = array();
|
@@ -363,7 +363,10 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
|
|
363 |
}
|
364 |
$profile['profileInfo']['language'] = Mage::getStoreConfig('general/locale/code', Mage::app()->getStore()->getId());
|
365 |
$profile['profileInfo']['returningStatus'] = $user_id ? 'true' : 'false';
|
366 |
-
|
|
|
|
|
|
|
367 |
|
368 |
// $profile['address'] = array();
|
369 |
// $profile['address']['line1'];
|
@@ -419,7 +422,7 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
|
|
419 |
return Mage::app()->getStore()->getCurrentCurrencyCode();
|
420 |
}
|
421 |
|
422 |
-
public function _getProductModel($product) {
|
423 |
/*
|
424 |
Section 6.4 of http://www.w3.org/2013/12/ceddl-201312.pdf
|
425 |
product: [
|
@@ -453,6 +456,18 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
|
|
453 |
*/
|
454 |
|
455 |
$product_model = array();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
456 |
|
457 |
try {
|
458 |
// Product Info
|
@@ -463,10 +478,10 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
|
|
463 |
$product_model['productInfo']['productURL'] = $product->getProductUrl();
|
464 |
|
465 |
//Check if images contain placeholders
|
466 |
-
if(!($product->getImage()=="no_selection")){
|
467 |
$product_model['productInfo']['productImage'] = $product->getImageUrl();
|
468 |
}
|
469 |
-
if(!($product->getThumbnail()=="no_selection")){
|
470 |
$product_model['productInfo']['productThumbnail'] = $product->getThumbnailUrl();
|
471 |
}
|
472 |
//Attributes
|
@@ -476,24 +491,32 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
|
|
476 |
try{
|
477 |
$attributes = Mage::getSingleton('eav/config')->getEntityType(Mage_Catalog_Model_Product::ENTITY)->getAttributeCollection();
|
478 |
foreach($attributes as $attr){
|
479 |
-
|
480 |
$attrCode = $attr->getAttributecode();
|
481 |
if($attrCode==='color'||$attrCode==='manufacturer'||$attrCode==='size'){
|
482 |
-
|
483 |
} elseif($attr->getData('is_user_defined')) {
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
|
|
|
|
489 |
} elseif($attr->getData('frontend_class')==='validate-digits'){
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
|
|
|
|
495 |
}
|
496 |
-
|
|
|
|
|
|
|
|
|
497 |
}
|
498 |
} catch(Exception $e){
|
499 |
}
|
@@ -583,6 +606,7 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
|
|
583 |
$product_model['price']['taxRate'] = ((float) $percent) / 100;
|
584 |
|
585 |
// For configurable/grouped/composite products, add all associated products to 'linkedProduct'
|
|
|
586 |
if ($product->isConfigurable() || $product->isGrouped() || $product->isComposite()) {
|
587 |
|
588 |
$product_model['linkedProduct'] = array();
|
@@ -609,7 +633,7 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
|
|
609 |
// Add related products to the data layer
|
610 |
$min_price = 0.0;
|
611 |
foreach($simple_collection as $simple_product){
|
612 |
-
array_push($product_model['linkedProduct'], $this->_getProductModel($simple_product));
|
613 |
$simple_product_price = floatval($simple_product->getPrice());
|
614 |
if ($simple_product_price && (!$min_price || $simple_product_price<$min_price)) {
|
615 |
$min_price = $simple_product_price;
|
@@ -625,6 +649,7 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
|
|
625 |
unset($product_model['linkedProduct']);
|
626 |
}
|
627 |
}
|
|
|
628 |
|
629 |
if ($this->_debug) {
|
630 |
$product_model['more']['isConfigurable'] = $product->isConfigurable();
|
@@ -702,7 +727,6 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
|
|
702 |
*/
|
703 |
|
704 |
$line_items = array();
|
705 |
-
|
706 |
try {
|
707 |
foreach($items as $item) {
|
708 |
$productId = $item->getProductId();
|
@@ -710,7 +734,7 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
|
|
710 |
// product needs to be visible
|
711 |
if ($product->isVisibleInSiteVisibility()) {
|
712 |
|
713 |
-
$litem_model = $this->_getProductModel($
|
714 |
|
715 |
if ($page_type == 'cart') {
|
716 |
$litem_model['quantity'] = floatval($item->getQty());
|
@@ -777,7 +801,7 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
|
|
777 |
$product = $this->_getCurrentProduct();
|
778 |
if (!$product) return false;
|
779 |
$this->_product = array();
|
780 |
-
array_push($this->_product, $this->_getProductModel($product));
|
781 |
} catch (Exception $e) {
|
782 |
}
|
783 |
}
|
@@ -834,7 +858,6 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
|
|
834 |
|
835 |
$cart = array();
|
836 |
$quote = $basket->getQuote();
|
837 |
-
|
838 |
// Set normal params
|
839 |
$cart_id = $basket->getQuoteId();
|
840 |
if ($cart_id) {
|
@@ -1047,6 +1070,7 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
|
|
1047 |
|
1048 |
if ($triggered_messaging_digital_data_layer_enabled==1) {
|
1049 |
$this->_debug = (boolean)Mage::getStoreConfig('triggered_messaging/triggered_messaging_digital_data_layer_debug_enabled');
|
|
|
1050 |
|
1051 |
$this->_setUser();
|
1052 |
$this->_setPage();
|
332 |
$user_id = $user->getEntityId();
|
333 |
$firstName = $user->getFirstname();
|
334 |
$lastName = $user->getLastname();
|
335 |
+
$userGroup = Mage::getModel('customer/group')->load(Mage::getSingleton('customer/session')->getCustomerGroupId());
|
336 |
|
337 |
if ($this->_isConfirmation()) {
|
338 |
$orderId = $this->_getCheckoutSession()->getLastOrderId();
|
344 |
$email = $user->getEmail();
|
345 |
}
|
346 |
|
|
|
347 |
$this->_user['profile'] = array();
|
348 |
|
349 |
$profile = array();
|
363 |
}
|
364 |
$profile['profileInfo']['language'] = Mage::getStoreConfig('general/locale/code', Mage::app()->getStore()->getId());
|
365 |
$profile['profileInfo']['returningStatus'] = $user_id ? 'true' : 'false';
|
366 |
+
if($userGroup && $this->_userGroupExp){
|
367 |
+
$profile['profileInfo']['segment']['userGroupId'] = $userGroup->getData('customer_group_id');
|
368 |
+
$profile['profileInfo']['segment']['userGroup'] = $userGroup->getData('customer_group_code');
|
369 |
+
}
|
370 |
|
371 |
// $profile['address'] = array();
|
372 |
// $profile['address']['line1'];
|
422 |
return Mage::app()->getStore()->getCurrentCurrencyCode();
|
423 |
}
|
424 |
|
425 |
+
public function _getProductModel($product, $inCart) {
|
426 |
/*
|
427 |
Section 6.4 of http://www.w3.org/2013/12/ceddl-201312.pdf
|
428 |
product: [
|
456 |
*/
|
457 |
|
458 |
$product_model = array();
|
459 |
+
$options = array();
|
460 |
+
//If there is optional data then add it
|
461 |
+
if($inCart){
|
462 |
+
$opt = $product->getProduct()->getTypeInstance(true)->getOrderOptions($product->getProduct());
|
463 |
+
if(isset($opt['attributes_info'])){
|
464 |
+
foreach($opt['attributes_info'] as $attribute){
|
465 |
+
$options[$attribute['label']] = $attribute['value'];
|
466 |
+
}
|
467 |
+
}
|
468 |
+
$productId = $product->getProductId();
|
469 |
+
$product = $this->_getProduct($productId);
|
470 |
+
}
|
471 |
|
472 |
try {
|
473 |
// Product Info
|
478 |
$product_model['productInfo']['productURL'] = $product->getProductUrl();
|
479 |
|
480 |
//Check if images contain placeholders
|
481 |
+
if($product->getImage() && !($product->getImage()=="no_selection")){
|
482 |
$product_model['productInfo']['productImage'] = $product->getImageUrl();
|
483 |
}
|
484 |
+
if($product->getThumbnail() && !($product->getThumbnail()=="no_selection")){
|
485 |
$product_model['productInfo']['productThumbnail'] = $product->getThumbnailUrl();
|
486 |
}
|
487 |
//Attributes
|
491 |
try{
|
492 |
$attributes = Mage::getSingleton('eav/config')->getEntityType(Mage_Catalog_Model_Product::ENTITY)->getAttributeCollection();
|
493 |
foreach($attributes as $attr){
|
494 |
+
$infoLocation = 'none';
|
495 |
$attrCode = $attr->getAttributecode();
|
496 |
if($attrCode==='color'||$attrCode==='manufacturer'||$attrCode==='size'){
|
497 |
+
$infoLocation = 'productInfo';
|
498 |
} elseif($attr->getData('is_user_defined')) {
|
499 |
+
$infoLocation = 'attributes';
|
500 |
+
}
|
501 |
+
if($infoLocation!=='none'){
|
502 |
+
if($attr->getData('frontend_class')==='validate-number'){
|
503 |
+
if($attr->getFrontend()->getValue($product)!=='No'){
|
504 |
+
$product_model[$infoLocation][$attrCode] = floatval($attr->getFrontend()->getValue($product));
|
505 |
+
}
|
506 |
} elseif($attr->getData('frontend_class')==='validate-digits'){
|
507 |
+
if($attr->getFrontend()->getValue($product)!=='No'){
|
508 |
+
$product_model[$infoLocation][$attrCode] = intval($attr->getFrontend()->getValue($product));
|
509 |
+
}
|
510 |
+
} else {
|
511 |
+
if($product->getAttributeText($attrCode)){
|
512 |
+
$product_model[$infoLocation][$attrCode] = $product->getAttributeText($attrCode);
|
513 |
+
}
|
514 |
}
|
515 |
+
}
|
516 |
+
}
|
517 |
+
//Add the options captured earlier
|
518 |
+
if(count($options)){
|
519 |
+
$product_model['attributes']['options'] = $options;
|
520 |
}
|
521 |
} catch(Exception $e){
|
522 |
}
|
606 |
$product_model['price']['taxRate'] = ((float) $percent) / 100;
|
607 |
|
608 |
// For configurable/grouped/composite products, add all associated products to 'linkedProduct'
|
609 |
+
if(!$inCart){
|
610 |
if ($product->isConfigurable() || $product->isGrouped() || $product->isComposite()) {
|
611 |
|
612 |
$product_model['linkedProduct'] = array();
|
633 |
// Add related products to the data layer
|
634 |
$min_price = 0.0;
|
635 |
foreach($simple_collection as $simple_product){
|
636 |
+
array_push($product_model['linkedProduct'], $this->_getProductModel($simple_product, false));
|
637 |
$simple_product_price = floatval($simple_product->getPrice());
|
638 |
if ($simple_product_price && (!$min_price || $simple_product_price<$min_price)) {
|
639 |
$min_price = $simple_product_price;
|
649 |
unset($product_model['linkedProduct']);
|
650 |
}
|
651 |
}
|
652 |
+
}
|
653 |
|
654 |
if ($this->_debug) {
|
655 |
$product_model['more']['isConfigurable'] = $product->isConfigurable();
|
727 |
*/
|
728 |
|
729 |
$line_items = array();
|
|
|
730 |
try {
|
731 |
foreach($items as $item) {
|
732 |
$productId = $item->getProductId();
|
734 |
// product needs to be visible
|
735 |
if ($product->isVisibleInSiteVisibility()) {
|
736 |
|
737 |
+
$litem_model = $this->_getProductModel($item, true);
|
738 |
|
739 |
if ($page_type == 'cart') {
|
740 |
$litem_model['quantity'] = floatval($item->getQty());
|
801 |
$product = $this->_getCurrentProduct();
|
802 |
if (!$product) return false;
|
803 |
$this->_product = array();
|
804 |
+
array_push($this->_product, $this->_getProductModel($product,false));
|
805 |
} catch (Exception $e) {
|
806 |
}
|
807 |
}
|
858 |
|
859 |
$cart = array();
|
860 |
$quote = $basket->getQuote();
|
|
|
861 |
// Set normal params
|
862 |
$cart_id = $basket->getQuoteId();
|
863 |
if ($cart_id) {
|
1070 |
|
1071 |
if ($triggered_messaging_digital_data_layer_enabled==1) {
|
1072 |
$this->_debug = (boolean)Mage::getStoreConfig('triggered_messaging/triggered_messaging_digital_data_layer_debug_enabled');
|
1073 |
+
$this->_userGroupExp = (boolean)Mage::getStoreConfig('triggered_messaging/triggered_messaging_digital_data_layer_user_group_enabled');
|
1074 |
|
1075 |
$this->_setUser();
|
1076 |
$this->_setPage();
|
@@ -59,6 +59,7 @@
|
|
59 |
<triggered_messaging>
|
60 |
<triggered_messaging_digital_data_layer_enabled>1</triggered_messaging_digital_data_layer_enabled>
|
61 |
<triggered_messaging_digital_data_layer_debug_enabled>0</triggered_messaging_digital_data_layer_debug_enabled>
|
|
|
62 |
<triggered_messaging_script_enabled>1</triggered_messaging_script_enabled>
|
63 |
<triggered_messaging_website_id></triggered_messaging_website_id>
|
64 |
</triggered_messaging>
|
59 |
<triggered_messaging>
|
60 |
<triggered_messaging_digital_data_layer_enabled>1</triggered_messaging_digital_data_layer_enabled>
|
61 |
<triggered_messaging_digital_data_layer_debug_enabled>0</triggered_messaging_digital_data_layer_debug_enabled>
|
62 |
+
<triggered_messaging_digital_data_layer_user_group_enabled>0</triggered_messaging_digital_data_layer_user_group_enabled>
|
63 |
<triggered_messaging_script_enabled>1</triggered_messaging_script_enabled>
|
64 |
<triggered_messaging_website_id></triggered_messaging_website_id>
|
65 |
</triggered_messaging>
|
@@ -49,6 +49,21 @@
|
|
49 |
<TriggeredMessaging_DigitalDataLayer_Enabled>1</TriggeredMessaging_DigitalDataLayer_Enabled>
|
50 |
</depends>
|
51 |
</TriggeredMessaging_DigitalDataLayer_DebugEnabled>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
52 |
</fields>
|
53 |
<expanded>1</expanded>
|
54 |
</TriggeredMessaging_DigitalDataLayer_Settings>
|
49 |
<TriggeredMessaging_DigitalDataLayer_Enabled>1</TriggeredMessaging_DigitalDataLayer_Enabled>
|
50 |
</depends>
|
51 |
</TriggeredMessaging_DigitalDataLayer_DebugEnabled>
|
52 |
+
|
53 |
+
<TriggeredMessaging_DigitalDataLayer_User_GroupEnabled translate="label">
|
54 |
+
<label>Enable User Group Exposure</label>
|
55 |
+
<frontend_type>select</frontend_type>
|
56 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
57 |
+
<config_path>triggered_messaging/triggered_messaging_digital_data_layer_user_group_enabled</config_path>
|
58 |
+
<comment><![CDATA[ This will expose the user group that any logged in user is a part of. Disable if you require this to be kept private. ]]></comment>
|
59 |
+
<sort_order>3</sort_order>
|
60 |
+
<show_in_default>1</show_in_default>
|
61 |
+
<show_in_website>1</show_in_website>
|
62 |
+
<show_in_store>1</show_in_store>
|
63 |
+
<depends>
|
64 |
+
<TriggeredMessaging_DigitalDataLayer_Enabled>1</TriggeredMessaging_DigitalDataLayer_Enabled>
|
65 |
+
</depends>
|
66 |
+
</TriggeredMessaging_DigitalDataLayer_User_GroupEnabled>
|
67 |
</fields>
|
68 |
<expanded>1</expanded>
|
69 |
</TriggeredMessaging_DigitalDataLayer_Settings>
|
@@ -71,7 +71,7 @@ try {
|
|
71 |
<?php endif;?>
|
72 |
<?php else: ?>
|
73 |
<script type="text/javascript">
|
74 |
-
console.log("You have enabled the Triggered Messaging script from the Magento Admin Configuration Panel, but have not supplied a website ID. Please
|
75 |
</script>
|
76 |
<?php endif;?>
|
77 |
<!-- Triggered Messaging Script End -->
|
71 |
<?php endif;?>
|
72 |
<?php else: ?>
|
73 |
<script type="text/javascript">
|
74 |
+
console.log("You have enabled the Triggered Messaging script from the Magento Admin Configuration Panel, but have not supplied a website ID. Please go to http://www.triggeredmessaging.com/contact for support on this.");
|
75 |
</script>
|
76 |
<?php endif;?>
|
77 |
<!-- Triggered Messaging Script End -->
|
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>W3CDigitalDataLayerByTriggeredMessaging</name>
|
4 |
-
<version>0.3.
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://opensource.org/licenses/apachepl.php">Apache Software License v2</license>
|
7 |
<channel>community</channel>
|
@@ -29,9 +29,9 @@ https://github.com/TriggeredMessaging/digitalDataMagentoExtension/issues</descri
|
|
29 |
- Minimum prices of grouped and bundled products can be extracted.
|
30 |
- Output of debug data can now be controlled through admin configuration panel.</notes>
|
31 |
<authors><author><name>Muhammed Miah</name><user>momiah1234</user><email>muhammed.miah@triggeredmessaging.com</email></author><author><name>Triggered Messaging</name><user>tmsdemo</user><email>demostore@triggeredmessaging.com</email></author><author><name>Mike Austin</name><user>tmsdemo</user><email>dev@triggeredmessaging.com</email></author></authors>
|
32 |
-
<date>2014-10-
|
33 |
-
<time>
|
34 |
-
<contents><target name="magecommunity"><dir name="TriggeredMessaging"><dir name="DigitalDataLayer"><dir name="Block"><file name="Ddl.php" hash="134766e2a49c3ecfbf03d1025dd41e8b"/></dir><dir name="Helper"><file name="Data.php" hash="5a6e19225e7db056946c95b1477e5c18"/></dir><dir name="Model"><dir name="Container"><file name="Ddl.php" hash="cc9dcd8cf4e460a01c242ac675ce5634"/></dir><file name="Observer.php" hash="26e0dcfc7a19d5310e44e004c144c23e"/><dir name="Page"><file name="Observer.php" hash="
|
35 |
<compatible/>
|
36 |
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
|
37 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>W3CDigitalDataLayerByTriggeredMessaging</name>
|
4 |
+
<version>0.3.6</version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://opensource.org/licenses/apachepl.php">Apache Software License v2</license>
|
7 |
<channel>community</channel>
|
29 |
- Minimum prices of grouped and bundled products can be extracted.
|
30 |
- Output of debug data can now be controlled through admin configuration panel.</notes>
|
31 |
<authors><author><name>Muhammed Miah</name><user>momiah1234</user><email>muhammed.miah@triggeredmessaging.com</email></author><author><name>Triggered Messaging</name><user>tmsdemo</user><email>demostore@triggeredmessaging.com</email></author><author><name>Mike Austin</name><user>tmsdemo</user><email>dev@triggeredmessaging.com</email></author></authors>
|
32 |
+
<date>2014-10-21</date>
|
33 |
+
<time>12:23:35</time>
|
34 |
+
<contents><target name="magecommunity"><dir name="TriggeredMessaging"><dir name="DigitalDataLayer"><dir name="Block"><file name="Ddl.php" hash="134766e2a49c3ecfbf03d1025dd41e8b"/></dir><dir name="Helper"><file name="Data.php" hash="5a6e19225e7db056946c95b1477e5c18"/></dir><dir name="Model"><dir name="Container"><file name="Ddl.php" hash="cc9dcd8cf4e460a01c242ac675ce5634"/></dir><file name="Observer.php" hash="26e0dcfc7a19d5310e44e004c144c23e"/><dir name="Page"><file name="Observer.php" hash="c7604beaaf3a32531d5f9b166657ce87"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="8b98dee82241e0b69661bf4699cba334"/><file name="cache.xml" hash="1b6658073a8126cd655cb18109559f49"/><file name="config.xml" hash="12b7aeea72beab187d714cc8d2975ae2"/><file name="system.xml" hash="2b3b9142a583ae381520aa085ccf5a20"/></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="triggeredmessaging"><file name="digital_data_layer.phtml" hash="d3351778bc5f00c57a19c752865ff319"/><file name="digital_data_layer_after_content.phtml" hash="6ee383b4d2011fd7e718b2930b7cd95d"/></dir></dir><dir name="layout"><dir name="triggeredmessaging"><file name="digital_data_layer.xml" hash="3c58b9faec1d9c63e1fb0a3fcc35a2d8"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="TriggeredMessaging_DigitalDataLayer.xml" hash="cfc3b1bff54f3e1f224f120e536bc411"/></dir></target></contents>
|
35 |
<compatible/>
|
36 |
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
|
37 |
</package>
|