Magento中产品详细信息页面上的自定义变量

时间:2012-10-29 08:46:50

标签: magento google-analytics magento-1.4

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

我正在尝试使用_setCustomVar将产品详细信息页面上的产品SKU传递给Google Analytics。 我正在运行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模块中没有对此的支持。这个问题有两个问题:

  1. 如何在默认跟踪代码之前添加_setCustomVar功能?
  2. 如何在产品页面上添加_setCustomVar功能?

  3. 原帖:

    我正在尝试将访问者正在查看的产品的SKU存储在Google 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中的Analytics模块更改核心文件,但我认为解决方案可能就在那里。 如何添加设置自定义变量的代码段,使其显示在_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和Analytics异步语法

3 个答案:

答案 0 :(得分:2)

目前正在使用我们的magento网站之一,如果您使用的是Magento Admin Google API,那么您可以(1)创建自定义模块以扩展它,或者(2)确保(查看源代码时){ {1}} javascript低于var _gaq = _gaq || [];代码块

<script>_gaq.push(['_setCustomVar...

创建自定义模块

在app / code / local / MageIgniter / GoogleAnalytics / etc / config.xml

<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/Block/Ga.php中创建

  <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/core/Mage/GoogleAnalytics/Block/Ga.php获取更多帮助

答案 1 :(得分:1)

我设法通过修改默认的GoogleAnalytics模块来实现它:

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

在新的Ga.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 -->
');

答案 2 :(得分:0)

如果您使用Google Analytics的异步插入代码,无论您将代码放在何处,它都只会在页面加载完成后应用。 因此,只要它们在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);
})();