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.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 +40 -22
- app/code/community/TriggeredMessaging/DigitalDataLayer/Model/System/Config/Source/Productattributes.php +26 -0
- app/code/community/TriggeredMessaging/DigitalDataLayer/etc/config.xml +2 -1
- app/code/community/TriggeredMessaging/DigitalDataLayer/etc/system.xml +16 -2
- app/design/frontend/base/default/template/triggeredmessaging/digital_data_layer_after_content.phtml +1 -1
- package.xml +4 -4
@@ -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, $
|
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($
|
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() &&
|
482 |
$product_model['productInfo']['productImage'] = $product->getImageUrl();
|
483 |
}
|
484 |
-
if($product->getThumbnail() &&
|
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
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
550 |
$product_model['price']['currency'] = $this->_getCurrency();
|
551 |
-
$product_model['price']['priceWithTax'] = floatval($product->getFinalPrice());
|
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(
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
738 |
|
739 |
-
if ($page_type
|
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,
|
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
|
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 |
+
?>
|
@@ -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 |
+
?>
|
@@ -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>
|
@@ -50,7 +50,7 @@
|
|
50 |
</depends>
|
51 |
</TriggeredMessaging_DigitalDataLayer_DebugEnabled>
|
52 |
|
53 |
-
|
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>
|
@@ -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();
|
@@ -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.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.
|
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>
|