2

更新: 希望这是对问题的更好解释:

我正在尝试使用_setCustomVar. 我在 Magento 1.4.0.1 上运行,我的 Analytics 异步代码由该<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,但默认 GoogleAnalytics 模块不支持此功能。这个问题有2个问题:

  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>部分中,因此它不会记录在 Analytics 中。

我试图避免使用 中的 Analytics 模块更改核心文件app/code/core/Mage/GoogleAnalytics/Block/Ga.php,但我认为解决方案可能就在那里。如何添加设置自定义变量的代码,使其出现在基本跟踪代码 BEFORE 中_gaq.push(['_trackPageview']);

这是 Analytics 提供的我的异步代码:

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

从这里开始的想法

注意:我正在使用 Magento 1.4.0.1 和 Analytics 异步语法

4

3 回答 3

2

这目前正在我们的一个magento网站上工作,如果您使用的是Magento Admin Google 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>

创建自定义模块

在 app/code/local/MageIgniter/GoogleAnalytics/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>

在 /app/code/local/MageIgniter/GoogleAnalytics/Block/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

于 2012-10-29T12:24:08.300 回答
1

我设法通过修改默认的 GoogleAnalytics 模块使其工作:

app/code/core/Mage/GoogleAnalytics/Block复制Ga.php文件时,导航到/www/app/code/local/Mage/GoogleAnalytics/Block并粘贴它(如果它们不存在,则创建必要的文件夹)。

在 newGa.php中,在_toHtml()测试是否从 Magento 后端激活 Analytics 后的函数中,测试当前页面是否为产品详细信息页面:

$_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 -->
');
于 2012-10-29T20:31:00.220 回答
0

如果你使用谷歌分析的异步插入代码,无论你把这段代码放在哪里,它只会在页面加载完成时应用。_gaq.push()因此,只要它们在 HTML 代码中内联(不是异步的),您就可以在之前添加您的之后

异步代码如下所示:

(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);
})();
于 2012-10-29T09:34:42.157 回答