Last active
July 30, 2020 11:56
-
-
Save giuseppemorelli/1cbec2a84e980eda6cf3 to your computer and use it in GitHub Desktop.
Override of Mage_GoogleAnalytics_Block_Ga for two tracking code at the same time. Create a custom variable on magento backend called 'google_analytics_code_two' to insert the second code
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Magento | |
* | |
* NOTICE OF LICENSE | |
* | |
* This source file is subject to the Open Software License (OSL 3.0) | |
* that is bundled with this package in the file LICENSE.txt. | |
* It is also available through the world-wide-web at this URL: | |
* http://opensource.org/licenses/osl-3.0.php | |
* If you did not receive a copy of the license and are unable to | |
* obtain it through the world-wide-web, please send an email | |
* to license@magento.com so we can send you a copy immediately. | |
* | |
* DISCLAIMER | |
* | |
* Do not edit or add to this file if you wish to upgrade Magento to newer | |
* versions in the future. If you wish to customize Magento for your | |
* needs please refer to http://www.magento.com for more information. | |
* | |
* @category Mage | |
* @package Mage_GoogleAnalytics | |
* @copyright Copyright (c) 2006-2014 X.commerce, Inc. (http://www.magento.com) | |
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) | |
*/ | |
/** | |
* GoogleAnalitics Page Block | |
* | |
* @category Mage | |
* @package Mage_GoogleAnalytics | |
* @author Magento Core Team <core@magentocommerce.com> | |
*/ | |
class Mage_GoogleAnalytics_Block_Ga extends Mage_Core_Block_Template | |
{ | |
/** | |
* @deprecated after 1.4.1.1 | |
* @see self::_getOrdersTrackingCode() | |
* @return string | |
*/ | |
public function getQuoteOrdersHtml() | |
{ | |
return ''; | |
} | |
/** | |
* @deprecated after 1.4.1.1 | |
* self::_getOrdersTrackingCode() | |
* @return string | |
*/ | |
public function getOrderHtml() | |
{ | |
return ''; | |
} | |
/** | |
* @deprecated after 1.4.1.1 | |
* @see _toHtml() | |
* @return string | |
*/ | |
public function getAccount() | |
{ | |
return ''; | |
} | |
/** | |
* Get a specific page name (may be customized via layout) | |
* | |
* @return string|null | |
*/ | |
public function getPageName() | |
{ | |
return $this->_getData('page_name'); | |
} | |
/** | |
* Render regular page tracking javascript code | |
* The custom "page name" may be set from layout or somewhere else. It must start from slash. | |
* | |
* @param string $accountId | |
* @return string | |
*/ | |
protected function _getPageTrackingCode($accountId) | |
{ | |
if ($this->helper('googleanalytics')->isUseUniversalAnalytics()) { | |
return $this->_getPageTrackingCodeUniversal($accountId); | |
} else { | |
return $this->_getPageTrackingCodeAnalytics($accountId); | |
} | |
} | |
/** | |
* Render regular page tracking javascript code | |
* The custom "page name" may be set from layout or somewhere else. It must start from slash. | |
* | |
* @param string $accountId | |
* @return string | |
*/ | |
protected function _getPageTrackingCodeUniversal($accountId) | |
{ | |
$_code = Mage::getModel('core/variable') | |
->loadByCode('google_analytics_code_two') | |
->getValue('text'); | |
return " | |
ga('create', '{$this->jsQuoteEscape($accountId)}', 'auto' ); | |
ga('create', '{$_code}', 'auto', {'name': 'newTracker'}); | |
" . $this->_getAnonymizationCode() . " | |
ga('send', 'pageview'); | |
ga('newTracker.send', 'pageview'); | |
"; | |
} | |
/** | |
* Render regular page tracking javascript code | |
* The custom "page name" may be set from layout or somewhere else. It must start from slash. | |
* | |
* @link http://code.google.com/apis/analytics/docs/gaJS/gaJSApiBasicConfiguration.html#_gat.GA_Tracker_._trackPageview | |
* @link http://code.google.com/apis/analytics/docs/gaJS/gaJSApi_gaq.html | |
* @param string $accountId | |
* @return string | |
*/ | |
protected function _getPageTrackingCodeAnalytics($accountId) | |
{ | |
$pageName = trim($this->getPageName()); | |
$optPageURL = ''; | |
if ($pageName && preg_match('/^\/.*/i', $pageName)) { | |
$optPageURL = ", '{$this->jsQuoteEscape($pageName)}'"; | |
} | |
return " | |
_gaq.push(['_setAccount', '{$this->jsQuoteEscape($accountId)}']); | |
" . $this->_getAnonymizationCode() . " | |
_gaq.push(['_trackPageview'{$optPageURL}]); | |
"; | |
} | |
/** | |
* Render information about specified orders and their items | |
* | |
* @return string | |
*/ | |
protected function _getOrdersTrackingCode() | |
{ | |
if ($this->helper('googleanalytics')->isUseUniversalAnalytics()) { | |
return $this->_getOrdersTrackingCodeUniversal(); | |
} else { | |
return $this->_getOrdersTrackingCodeAnalytics(); | |
} | |
} | |
/** | |
* Render information about specified orders and their items | |
* | |
* @return string | |
*/ | |
protected function _getOrdersTrackingCodeUniversal() | |
{ | |
$orderIds = $this->getOrderIds(); | |
if (empty($orderIds) || !is_array($orderIds)) { | |
return; | |
} | |
$collection = Mage::getResourceModel('sales/order_collection') | |
->addFieldToFilter('entity_id', array('in' => $orderIds)); | |
$result = array(); | |
$result[] = "ga('require', 'ecommerce')"; | |
$result[] = "ga('newTracker.require', 'ecommerce')"; | |
foreach ($collection as $order) { | |
$result[] = sprintf("ga('ecommerce:addTransaction', { | |
'id': '%s', | |
'affiliation': '%s', | |
'revenue': '%s', | |
'tax': '%s', | |
'shipping': '%s' | |
});", | |
$order->getIncrementId(), | |
$this->jsQuoteEscape(Mage::app()->getStore()->getFrontendName()), | |
$order->getBaseGrandTotal(), | |
$order->getBaseTaxAmount(), | |
$order->getBaseShippingAmount() | |
); | |
$result[] = sprintf("ga('newTracker.ecommerce:addTransaction', { | |
'id': '%s', | |
'affiliation': '%s', | |
'revenue': '%s', | |
'tax': '%s', | |
'shipping': '%s' | |
});", | |
$order->getIncrementId(), | |
$this->jsQuoteEscape(Mage::app()->getStore()->getFrontendName()), | |
$order->getBaseGrandTotal(), | |
$order->getBaseTaxAmount(), | |
$order->getBaseShippingAmount() | |
); | |
foreach ($order->getAllVisibleItems() as $item) { | |
$result[] = sprintf("ga('ecommerce:addItem', { | |
'id': '%s', | |
'sku': '%s', | |
'name': '%s', | |
'category': '%s', | |
'price': '%s', | |
'quantity': '%s' | |
});", | |
$order->getIncrementId(), | |
$this->jsQuoteEscape($item->getSku()), | |
$this->jsQuoteEscape($item->getName()), | |
null, // there is no "category" defined for the order item | |
$item->getBasePrice(), | |
$item->getQtyOrdered() | |
); | |
$result[] = sprintf("ga('newTracker.ecommerce:addItem', { | |
'id': '%s', | |
'sku': '%s', | |
'name': '%s', | |
'category': '%s', | |
'price': '%s', | |
'quantity': '%s' | |
});", | |
$order->getIncrementId(), | |
$this->jsQuoteEscape($item->getSku()), | |
$this->jsQuoteEscape($item->getName()), | |
null, // there is no "category" defined for the order item | |
$item->getBasePrice(), | |
$item->getQtyOrdered() | |
); | |
} | |
$result[] = "ga('ecommerce:send');"; | |
$result[] = "ga('newTracker.ecommerce:send');"; | |
} | |
return implode("\n", $result); | |
} | |
/** | |
* Render information about specified orders and their items | |
* | |
* @link http://code.google.com/apis/analytics/docs/gaJS/gaJSApiEcommerce.html#_gat.GA_Tracker_._addTrans | |
* @return string | |
*/ | |
protected function _getOrdersTrackingCodeAnalytics() | |
{ | |
$orderIds = $this->getOrderIds(); | |
if (empty($orderIds) || !is_array($orderIds)) { | |
return; | |
} | |
$collection = Mage::getResourceModel('sales/order_collection') | |
->addFieldToFilter('entity_id', array('in' => $orderIds)); | |
$result = array(); | |
foreach ($collection as $order) { | |
if ($order->getIsVirtual()) { | |
$address = $order->getBillingAddress(); | |
} else { | |
$address = $order->getShippingAddress(); | |
} | |
$result[] = sprintf("_gaq.push(['_addTrans', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s']);", | |
$order->getIncrementId(), | |
$this->jsQuoteEscape(Mage::app()->getStore()->getFrontendName()), | |
$order->getBaseGrandTotal(), | |
$order->getBaseTaxAmount(), | |
$order->getBaseShippingAmount(), | |
$this->jsQuoteEscape(Mage::helper('core')->escapeHtml($address->getCity())), | |
$this->jsQuoteEscape(Mage::helper('core')->escapeHtml($address->getRegion())), | |
$this->jsQuoteEscape(Mage::helper('core')->escapeHtml($address->getCountry())) | |
); | |
foreach ($order->getAllVisibleItems() as $item) { | |
$result[] = sprintf("_gaq.push(['_addItem', '%s', '%s', '%s', '%s', '%s', '%s']);", | |
$order->getIncrementId(), | |
$this->jsQuoteEscape($item->getSku()), $this->jsQuoteEscape($item->getName()), | |
null, // there is no "category" defined for the order item | |
$item->getBasePrice(), $item->getQtyOrdered() | |
); | |
} | |
$result[] = "_gaq.push(['_trackTrans']);"; | |
} | |
return implode("\n", $result); | |
} | |
/** | |
* Render IP anonymization code for page tracking javascript code | |
* | |
* @return string | |
*/ | |
protected function _getAnonymizationCode() | |
{ | |
if (!Mage::helper('googleanalytics')->isIpAnonymizationEnabled()) { | |
return ''; | |
} | |
if ($this->helper('googleanalytics')->isUseUniversalAnalytics()) { | |
return $this->_getAnonymizationCodeUniversal(); | |
} else { | |
return $this->_getAnonymizationCodeAnalytics(); | |
} | |
} | |
/** | |
* Render IP anonymization code for page tracking javascript universal analytics code | |
* | |
* @return string | |
*/ | |
protected function _getAnonymizationCodeUniversal() | |
{ | |
return "ga('set', 'anonymizeIp', true);"; | |
} | |
/** | |
* Render IP anonymization code for page tracking javascript google analytics code | |
* | |
* @return string | |
*/ | |
protected function _getAnonymizationCodeAnalytics() | |
{ | |
return "_gaq.push (['_gat._anonymizeIp']);"; | |
} | |
/** | |
* Render GA tracking scripts | |
* | |
* @return string | |
*/ | |
protected function _toHtml() | |
{ | |
if (!Mage::helper('googleanalytics')->isGoogleAnalyticsAvailable()) { | |
return ''; | |
} | |
return parent::_toHtml(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment