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>
|
