W3CDigitalDataLayerByTriggeredMessaging - Version 0.3.7

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.

Download this release

Release Info

Developer Muhammed Miah
Extension W3CDigitalDataLayerByTriggeredMessaging
Version 0.3.7
Comparing to
See all releases


Code changes from version 0.3.6 to 0.3.7

app/code/community/TriggeredMessaging/DigitalDataLayer/Model/Page/Observer.php CHANGED
@@ -166,7 +166,7 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
166
  public function getVersion() {
167
  return $this->_version;
168
  }
169
-
170
  public function getPurchaseCompleteQs() {
171
 
172
  $orderId = $this->_getCheckoutSession()->getLastOrderId();
@@ -184,7 +184,7 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
184
 
185
  return $qs;
186
  }
187
-
188
  public function getUser() {
189
  return $this->_user;
190
  }
@@ -422,7 +422,7 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
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: [
@@ -458,7 +458,7 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
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){
@@ -468,7 +468,10 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
468
  $productId = $product->getProductId();
469
  $product = $this->_getProduct($productId);
470
  }
471
-
 
 
 
472
  try {
473
  // Product Info
474
  $product_model['productInfo'] = array();
@@ -478,10 +481,10 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
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
@@ -498,7 +501,7 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
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));
@@ -527,7 +530,7 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
527
  $catiterator = 0;
528
  $setCategories = array();
529
  foreach($allcategories as $cat){
530
- if($catiterator==0){
531
  $product_model['category']['primaryCategory'] = $cat;
532
  $catiterator++;
533
 
@@ -546,9 +549,14 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
546
 
547
  // Price
548
  $product_model['price'] = array();
549
- $product_model['price']['basePrice'] = floatval($product->getPrice());
 
 
 
 
 
550
  $product_model['price']['currency'] = $this->_getCurrency();
551
- $product_model['price']['priceWithTax'] = floatval($product->getFinalPrice()); // May be lower due to discounts! TODO
552
 
553
  if (!$product_model['price']['priceWithTax']) {
554
  unset( $product_model['price']['priceWithTax'] );
@@ -606,7 +614,7 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
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();
@@ -661,6 +669,12 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
661
  $product_model['more']['isRecurring'] = $product->isRecurring();
662
  $product_model['more']['isComposite'] = $product->isComposite();
663
  $product_model['more']['getTypeId'] = $product->getTypeId();
 
 
 
 
 
 
664
  }
665
 
666
  // Other
@@ -731,12 +745,17 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
731
  foreach($items as $item) {
732
  $productId = $item->getProductId();
733
  $product = $this->_getProduct($productId);
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());
741
  } else {
742
  $litem_model['quantity'] = floatval($item->getQtyOrdered());
@@ -766,11 +785,9 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
766
  $litem_model['price']['all']['_getConvertedPrice'] = $product->getConvertedPrice();
767
  }
768
 
769
- // $litem_model['linkedProduct'] = array();
770
  // $litem_model['attributes'] = array();
771
 
772
  array_push($line_items, $litem_model);
773
- }
774
  }
775
  } catch (Exception $e) {
776
  }
@@ -801,7 +818,7 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
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
  }
@@ -907,7 +924,7 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
907
  if ($this->_debug) {
908
  $cart['price']['testLog'] = "Second method used to retrieve cart items.";
909
  }
910
-
911
  // In case items were not retrieved for some reason
912
  $cartHelper = Mage::helper('checkout/cart');
913
  $items = $cartHelper->getCart()->getItems();
@@ -937,7 +954,7 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
937
  */
938
  try {
939
  $grandTotalWithoutShipping = $order->getGrandTotal() - $order->getShippingAmount();
940
- if ($tax == 0 || $grandTotalWithoutShipping > $order->getSubtotal()) {
941
  return false;
942
  } else {
943
  return true;
@@ -1071,6 +1088,7 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
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();
@@ -1101,4 +1119,4 @@ class TriggeredMessaging_DigitalDataLayer_Model_Page_Observer {
1101
  return $this;
1102
  }
1103
  }
1104
- ?>
166
  public function getVersion() {
167
  return $this->_version;
168
  }
169
+
170
  public function getPurchaseCompleteQs() {
171
 
172
  $orderId = $this->_getCheckoutSession()->getLastOrderId();
184
 
185
  return $qs;
186
  }
187
+
188
  public function getUser() {
189
  return $this->_user;
190
  }
422
  return Mage::app()->getStore()->getCurrentCurrencyCode();
423
  }
424
 
425
+ public function _getProductModel($product, $_page_) {
426
  /*
427
  Section 6.4 of http://www.w3.org/2013/12/ceddl-201312.pdf
428
  product: [
458
  $product_model = array();
459
  $options = array();
460
  //If there is optional data then add it
461
+ if($_page_==='cart'){
462
  $opt = $product->getProduct()->getTypeInstance(true)->getOrderOptions($product->getProduct());
463
  if(isset($opt['attributes_info'])){
464
  foreach($opt['attributes_info'] as $attribute){
468
  $productId = $product->getProductId();
469
  $product = $this->_getProduct($productId);
470
  }
471
+ if($_page_==='list'){
472
+ $productId = $product->getId();
473
+ $product = $this->_getProduct($productId);
474
+ }
475
  try {
476
  // Product Info
477
  $product_model['productInfo'] = array();
481
  $product_model['productInfo']['productURL'] = $product->getProductUrl();
482
 
483
  //Check if images contain placeholders
484
+ if($product->getImage() && $product->getImage()!=="no_selection"){
485
  $product_model['productInfo']['productImage'] = $product->getImageUrl();
486
  }
487
+ if($product->getThumbnail() && $product->getThumbnail()!=="no_selection"){
488
  $product_model['productInfo']['productThumbnail'] = $product->getThumbnailUrl();
489
  }
490
  //Attributes
501
  } elseif($attr->getData('is_user_defined')) {
502
  $infoLocation = 'attributes';
503
  }
504
+ if($infoLocation!=='none' && in_array($attrCode,$this->_expAttr)){
505
  if($attr->getData('frontend_class')==='validate-number'){
506
  if($attr->getFrontend()->getValue($product)!=='No'){
507
  $product_model[$infoLocation][$attrCode] = floatval($attr->getFrontend()->getValue($product));
530
  $catiterator = 0;
531
  $setCategories = array();
532
  foreach($allcategories as $cat){
533
+ if($catiterator===0){
534
  $product_model['category']['primaryCategory'] = $cat;
535
  $catiterator++;
536
 
549
 
550
  // Price
551
  $product_model['price'] = array();
552
+ if(!$product->getSpecialPrice()){
553
+ $product_model['price']['basePrice'] = floatval($product->getPrice());
554
+ } else {
555
+ $product_model['price']['basePrice'] = floatval($product->getSpecialPrice());
556
+ $product_model['price']['regularPrice'] = floatval($product->getPrice());
557
+ }
558
  $product_model['price']['currency'] = $this->_getCurrency();
559
+ $product_model['price']['priceWithTax'] = floatval($product->getFinalPrice());
560
 
561
  if (!$product_model['price']['priceWithTax']) {
562
  unset( $product_model['price']['priceWithTax'] );
614
  $product_model['price']['taxRate'] = ((float) $percent) / 100;
615
 
616
  // For configurable/grouped/composite products, add all associated products to 'linkedProduct'
617
+ if($_page_==='product'){
618
  if ($product->isConfigurable() || $product->isGrouped() || $product->isComposite()) {
619
 
620
  $product_model['linkedProduct'] = array();
669
  $product_model['more']['isRecurring'] = $product->isRecurring();
670
  $product_model['more']['isComposite'] = $product->isComposite();
671
  $product_model['more']['getTypeId'] = $product->getTypeId();
672
+ $product_model['more']['getImage'] = $product->getImage();
673
+ $product_model['more']['getImageURL'] = $product->getImageUrl();
674
+ $product_model['more']['getSmallImage'] = $product->getSmallImage();
675
+ $product_model['more']['getSmallImageURL'] = $product->getSmallImageUrl();
676
+ $product_model['more']['getThumbnail'] = $product->getThumbnail();
677
+ $product_model['more']['getThumbnailURL'] = $product->getThumbnailUrl();
678
  }
679
 
680
  // Other
745
  foreach($items as $item) {
746
  $productId = $item->getProductId();
747
  $product = $this->_getProduct($productId);
 
 
748
 
749
+ $parentIds = Mage::getModel('catalog/product_type_grouped')->getParentIdsByChild($productId);
750
+ if($parentIds[0]){
751
+ $litem_model = $this->_getProductModel($product, 'linked');
752
+ $litem_model['linkedProduct'] = array();
753
+ array_push($litem_model['linkedProduct'], $this->_getProductModel($this->_getProduct($parentIds[0]), 'linked'));
754
+ } else {
755
+ $litem_model = $this->_getProductModel($item, 'cart');
756
+ }
757
 
758
+ if ($page_type === 'cart') {
759
  $litem_model['quantity'] = floatval($item->getQty());
760
  } else {
761
  $litem_model['quantity'] = floatval($item->getQtyOrdered());
785
  $litem_model['price']['all']['_getConvertedPrice'] = $product->getConvertedPrice();
786
  }
787
 
 
788
  // $litem_model['attributes'] = array();
789
 
790
  array_push($line_items, $litem_model);
 
791
  }
792
  } catch (Exception $e) {
793
  }
818
  $product = $this->_getCurrentProduct();
819
  if (!$product) return false;
820
  $this->_product = array();
821
+ array_push($this->_product, $this->_getProductModel($product,'product'));
822
  } catch (Exception $e) {
823
  }
824
  }
924
  if ($this->_debug) {
925
  $cart['price']['testLog'] = "Second method used to retrieve cart items.";
926
  }
927
+
928
  // In case items were not retrieved for some reason
929
  $cartHelper = Mage::helper('checkout/cart');
930
  $items = $cartHelper->getCart()->getItems();
954
  */
955
  try {
956
  $grandTotalWithoutShipping = $order->getGrandTotal() - $order->getShippingAmount();
957
+ if ($tax === 0 || $grandTotalWithoutShipping > $order->getSubtotal()) {
958
  return false;
959
  } else {
960
  return true;
1088
  if ($triggered_messaging_digital_data_layer_enabled==1) {
1089
  $this->_debug = (boolean)Mage::getStoreConfig('triggered_messaging/triggered_messaging_digital_data_layer_debug_enabled');
1090
  $this->_userGroupExp = (boolean)Mage::getStoreConfig('triggered_messaging/triggered_messaging_digital_data_layer_user_group_enabled');
1091
+ $this->_expAttr = explode(',',Mage::getStoreConfig('triggered_messaging/triggered_messaging_digital_data_layer_attributes_enabled'));
1092
 
1093
  $this->_setUser();
1094
  $this->_setPage();
1119
  return $this;
1120
  }
1121
  }
1122
+ ?>
app/code/community/TriggeredMessaging/DigitalDataLayer/Model/System/Config/Source/Productattributes.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class TriggeredMessaging_DigitalDataLayer_Model_System_Config_Source_Productattributes
3
+ { /**
4
+ * Options getter
5
+ *
6
+ * @return array
7
+ */
8
+ public function toOptionArray()
9
+ {
10
+ $attributes = Mage::getModel('catalog/product')->getAttributes();
11
+ $attributeArray = array(array('label'=>'none','value'=>'0'));
12
+
13
+ foreach($attributes as $a){
14
+
15
+ foreach ($a->getEntityType()->getAttributeCodes() as $attrCode) {
16
+ $attribute_details = Mage::getSingleton("eav/config")->getAttribute('catalog_product', $attrCode);
17
+ if($attribute_details->getData('is_user_defined')){
18
+ array_push($attributeArray,array('label' => $attrCode,'value' => $attrCode));
19
+ }
20
+ }
21
+ break;
22
+ }
23
+ return $attributeArray;
24
+ }
25
+ }
26
+ ?>
app/code/community/TriggeredMessaging/DigitalDataLayer/etc/config.xml CHANGED
@@ -60,8 +60,9 @@
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>
66
  </default>
67
- </config>
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_digital_data_layer_attributes_enabled></triggered_messaging_digital_data_layer_attributes_enabled>
64
  <triggered_messaging_script_enabled>1</triggered_messaging_script_enabled>
65
  <triggered_messaging_website_id></triggered_messaging_website_id>
66
  </triggered_messaging>
67
  </default>
68
+ </config>
app/code/community/TriggeredMessaging/DigitalDataLayer/etc/system.xml CHANGED
@@ -50,7 +50,7 @@
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>
@@ -64,6 +64,20 @@
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>
@@ -167,4 +181,4 @@
167
  </groups>
168
  </triggeredmessaging_digitaldatalayer_support>
169
  </sections>
170
- </config>
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>
64
  <TriggeredMessaging_DigitalDataLayer_Enabled>1</TriggeredMessaging_DigitalDataLayer_Enabled>
65
  </depends>
66
  </TriggeredMessaging_DigitalDataLayer_User_GroupEnabled>
67
+ <TriggeredMessaging_DigitalDataLayer_Attributes_Enabled translate="label">
68
+ <label>Enable Product Attributes</label>
69
+ <frontend_type>multiselect</frontend_type>
70
+ <source_model>TriggeredMessaging_DigitalDataLayer_Model_System_Config_Source_Productattributes</source_model>
71
+ <config_path>triggered_messaging/triggered_messaging_digital_data_layer_attributes_enabled</config_path>
72
+ <comment><![CDATA[ Select the custom product attributes that you would like to expose. NOTE: You must use Shift or Ctrl to select multiple attributes. ]]></comment>
73
+ <sort_order>4</sort_order>
74
+ <show_in_default>1</show_in_default>
75
+ <show_in_website>1</show_in_website>
76
+ <show_in_store>1</show_in_store>
77
+ <depends>
78
+ <TriggeredMessaging_DigitalDataLayer_Enabled>1</TriggeredMessaging_DigitalDataLayer_Enabled>
79
+ </depends>
80
+ </TriggeredMessaging_DigitalDataLayer_Attributes_Enabled>
81
  </fields>
82
  <expanded>1</expanded>
83
  </TriggeredMessaging_DigitalDataLayer_Settings>
181
  </groups>
182
  </triggeredmessaging_digitaldatalayer_support>
183
  </sections>
184
+ </config>
app/design/frontend/base/default/template/triggeredmessaging/digital_data_layer_after_content.phtml CHANGED
@@ -33,7 +33,7 @@
33
  // Need to do it after content block as the specified products are loaded then
34
  $products = array();
35
  foreach ($_productCollection as $_product) {
36
- array_push($products, $mage->_getProductModel($_product));
37
  }
38
 
39
  $preloaded_product = $mage->getProduct();
33
  // Need to do it after content block as the specified products are loaded then
34
  $products = array();
35
  foreach ($_productCollection as $_product) {
36
+ array_push($products, $mage->_getProductModel($_product, 'list'));
37
  }
38
 
39
  $preloaded_product = $mage->getProduct();
package.xml CHANGED
@@ -1,7 +1,7 @@
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,9 +29,9 @@ https://github.com/TriggeredMessaging/digitalDataMagentoExtension/issues</descri
29
  - Minimum prices of grouped and bundled products can be extracted.&#xD;
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>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>W3CDigitalDataLayerByTriggeredMessaging</name>
4
+ <version>0.3.7</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.&#xD;
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-22</date>
33
+ <time>17:10:37</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="919273f6bc58231f63adec92e7a01824"/></dir><dir name="System"><dir name="Config"><dir name="Source"><file name="Productattributes.php" hash="398b6fb87a75d661c19ecc30dd7e39af"/></dir></dir></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="8b98dee82241e0b69661bf4699cba334"/><file name="cache.xml" hash="1b6658073a8126cd655cb18109559f49"/><file name="config.xml" hash="fd0c1e2b383a9cc5801707f4a0db57d7"/><file name="system.xml" hash="c11c84c7ca24fec850ac87c87791fb03"/></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="c28cb1ee3d5cfd761ca7aeb6dae9df20"/></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>