2012-10-29 196 views
2

UPDATE: 希望這是問題的一個更好的解釋:自定義變量

我想對產品SKU通過我的產品的詳細信息頁面,谷歌Analytics(分析)使用_setCustomVar上。 我在Magento的1.4.0.1運行和我的分析異步代碼是由<head>部分默認GA模塊插入,它看起來像這樣:

<script type="text/javascript"> 

var _gaq = _gaq || []; 
_gaq.push(['_setAccount', 'UA-xxxxxxxx-1']); 
_gaq.push(['_trackPageview']); 

(function() { 
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; 
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; 
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 
})(); 

</script> 

我想添加自定義變量有這個語法:

_gaq.push(['_setCustomVar',1,'View Product','<?php echo $_helper->productAttribute($_product, $_product->getSku(), 'sku') ?>',3]); 

根據該分析文檔,爲了要記錄的自定義變量,則_setCustomVar之前,必須調用的_trackPageView, 但有默認的Google分析模塊在此不支持。此問題有兩個問題:

  1. 如何在默認跟蹤代碼之前添加我的_setCustomVar函數?
  2. 我如何可以加我_setCustomVar函數只在商品頁面上?

原帖:

我試圖存儲產品的SKU通過在Analytics(分析)自定義變量訪問者正在查看。這個語法是_gaq.push(['_setCustomVar',3,'View Product','SKU12345',2]);

顯然這個代碼段應只加在產品詳細信息頁面,而不是列表,購物車,或者結帳頁面。所以,我已經試過編輯view.phtml文件中app/design/frontend/default/my_package/template/catalog/product中加入下面的代碼:

<script> 
_gaq.push(['_setCustomVar', 
    1, 
    'View Product', 
    '<?php echo $_helper->productAttribute($_product, $_product->getSku(), 'sku') ?>', 
    3]); 
</script> 

的問題是,我加入這個自定義變量基本跟蹤代碼,這是在默認情況下後加入<head>部分,因此它不會記錄在Google Analytics中。

我試圖避免改變app/code/core/Mage/GoogleAnalytics/Block/Ga.php與分析模塊的核心文件,但我認爲解決方案可能躺在那裏。 如何添加一段代碼,設置自定義變量,以便它出現的基本跟蹤代碼之前_gaq.push(['_trackPageview']);內?

這是通過分析我提供異步代碼:

<script type="text/javascript"> 

var _gaq = _gaq || []; 
_gaq.push(['_setAccount', 'UA-xxxxxxxx-1']); 
_gaq.push(['_trackPageview']); 

(function() { 
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; 
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; 
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 
})(); 

</script> 

理念從here

注:如果您使用我使用的Magento 1.4.0.1和分析異步語法

+0

您手動添加谷歌Analytics(分析)代碼,您的頁眉/頁腳,或者你使用谷歌的Magento阿比... http://www.siteground.com/tutorials/magento/magento_google_analytics.htm ? –

+0

我使用了Magento的核心分析模塊就像你貼 – Bogdan

回答

1

我已經成功地使其通過修改默認的Google分析模塊的工作:

app/code/core/Mage/GoogleAnalytics/Block複製Ga.php文件,然後導航到/www/app/code/local/Mage/GoogleAnalytics/Block並粘貼它(如果它們不存在,則創建必要的文件夾)。

Ga.php

,在測試後_toHtml()功能,如果Analytics(分析)從Magento的後臺激活,測試,如果當前頁面是產品詳細信息頁:

$_product = Mage::registry('current_product'); 
if($_product) { 
     //output code with _setCustom var 
    } else { 
     //output normal tracking code 
    } 

與自定義變量集看起來碼像這樣:

$this->addText(' 
<!-- BEGIN GOOGLE ANALYTICS CODE --> 
<script type=\"text/javascript\"> 
var _gaq = _gaq || []; 
_gaq.push([\'_setAccount\', \'UA-25272379-1\']); 
_gaq.push([\'_setCustomVar\', 1, \'Product View\',\''.$_product->getSku().'\', 3]); 
_gaq.push([\'_trackPageview\']); 

(function() { 
    var ga = document.createElement(\'script\'); ga.type = \'text/javascript\'; ga.async = true; 
    ga.src = (\'https:\' == document.location.protocol ? \'https://ssl\' : \'http://www\') + \'.google-analytics.com/ga.js\'; 
    var s = document.getElementsByTagName(\'script\')[0]; s.parentNode.insertBefore(ga, s); 
})(); 
</script> 
<!-- END GOOGLE ANALYTICS CODE --> 
'); 
0

谷歌分析,無論身在何處,你把這個代碼的asynchrnous插入代碼,它只會在頁面完成加載應用。 所以,你可以的前後,只要他們在HTML代碼(不是異步)

異步代碼看起來就像是在線添加_gaq.push()

(function() { 
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; 
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; 
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga); 
})(); 
+0

是的,我使用的是異步語法的siteground鏈接,但我已經添加了我的'_gaq.push()'頭段後,它不是獲取數據分析。 我編輯了我的問題以包含我正在使用的異步代碼。 – Bogdan

+0

你確定所有在附近嗎? _setAccount? _setDomainName?你在觀看GA管理員的實時面板嗎?如果您手動添加代碼BEFORE:它工作嗎? –

+0

是的,它包含'_setAccount'(再次編輯問題)。我之前沒有嘗試過添加它,因爲我不知道該怎麼做。 – Bogdan

2

這目前正在我們的一個Magento的網站,如果你使用的是Magento管理谷歌的API,那麼你可以:(1)創建一個自定義模塊來擴展它或(2)確保(查看時源)的<script>_gaq.push(['_setCustomVar... JavaScript是低於VAR _gaq = _gaq || [];碼塊

<script type="text/javascript"> 
    //<![CDATA[ 
    var _gaq = _gaq || []; 

    _gaq.push(['_setAccount', 'UA-xxxxxxx-3']); 
    _gaq.push(['_trackPageview']); 
    _gaq.push(['_setCustomVar', '1', 'awe2', '<?php echo $_helper->productAttribute($_product, $_product->getSku(), 'sku') ?>', '1']); 

    (function() { 
     var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; 
     ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; 
     var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 
    })(); 

//]]> 
</script> 

以創建自定義模塊

在應用程序/代碼

/本地/ MageIgniter/Google分析的/ etc/config.xml中

<config> 
    <modules> 
     <MageIgniter_GoogleAnalytics> 
      <version>0.1.0</version> 
     </MageIgniter_GoogleAnalytics> 
    </modules> 
    <global> 
     <blocks> 
      <googleanalytics> 
       <rewrite> 
        <ga>MageIgniter_GoogleAnalytics_Block_Ga</ga> 
       </rewrite> 
      </googleanalytics> 
     </blocks> 
    </global> 
    </config> 

創建/應用/代碼/本地/ MageIgniter/Google分析/砌塊/ Ga.php

class MageIgniter_GoogleAnalytics_Block_Ga extends Mage_GoogleAnalytics_Block_Ga 
    { 

     private $remId = NULL; 
     private $conversionId = NULL; 
     private $conversionLabel = NULL; 


     public function getPageName() 
     { 
      return $this->_getData('page_name'); 
     } 


     protected function _getPageTrackingCode($accountId) 
     { 
      $pageName = trim($this->getPageName()); 
      $optPageURL = ''; 
      if ($pageName && preg_match('/^\/.*/i', $pageName)) { 
       $optPageURL = ", '{$this->jsQuoteEscape($pageName)}'"; 
      } 
      return " 
    _gaq.push(['_setAccount', '{$this->jsQuoteEscape($accountId)}']); 
    _gaq.push(['_trackPageview'{$optPageURL}]); 
    " . $this->getProductSku(); 
     } 

     ...... 

     public function getProductSku(){ 
      if($product = Mage::registry('current_product')){ 
       return sprintf("_gaq.push(['_setCustomVar', '%s', '%s', '%s', '%s']);", 
        1, 
        'Sku', 
        $product->getSku(), 
        1 
       ) . "\n"; 
      } 

      return ''; 
     } 

    ........ 
} 

看到/app/code/core/Mage/GoogleAnalytics/Block/Ga.php更多的幫助

+0

這很酷,但我有兩個問題:#1你是如何修改GA跟蹤代碼來包含customVar的? #2這個代碼不是顯示在你的magento網站的每一頁上,例如CMS頁面,分類頁面,結賬,購物車等? – Bogdan

+0

通過創建擴展GA的自定義模塊...閱讀我更新的答案 –

+0

好的,但不是在所有頁面上設置自定義變量(包括非產品詳細信息)? – Bogdan