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

2024-01-10

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

我正在尝试使用以下方法将产品详细信息页面上的产品 SKU 传递给 Google Analytics:_setCustomVar。 我在 Magento 1.4.0.1 上运行,我的 Analytics 异步代码由默认 GA 模块插入<head>部分,它看起来像这样:

<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,但我认为解决方案可能就在那里。 如何添加设置自定义变量的代码片段,以便它出现在基本跟踪代码之前_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>

想法来自here http://www.lunametrics.com/blog/2012/08/28/20-ways-use-custom-variables/

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


目前正在我们的 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>

创建自定义模块

在应用程序/代码/本地/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 获取更多帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • Google Analytics.js 和内容安全政策

    我有一个使用默认 html5 样板内容安全策略的 Web 应用程序 但是 我们的页面上有新的 Google Analytics js 代码段 该代码段已被 CSP 阻止 我一直在尝试找到一个允许 Google Analytics js 的
  • 如何自定义 magento onepage 结账表单

    我正在使用 Magento 1 5 1 0 我想在单页结账表单中自定义地址块 我想删除 传真 输入字段并将 区域 下拉列表放在国家 地区 下拉列表 下方 这个形式是在哪里定义的 亲切的问候 伯蒂 导航到您的主题文件夹 默认文件位于以下位置
  • Magento Rest API - oAuth 错误

    我是第一次使用 Magento Rest API 我浏览了 Rest API 的教程http www magentocommerce com api rest并尝试了一个通过 API 获取产品的示例 callbackUrl http loc
  • 如何获取magento中登录客户的订单列表

    我正在努力获取客户订购的订单号 名称 列表 我尝试过使用 Mage getModel sales order gt load order id 但对我不起作用 实际上 我正在开发帮助台模块并尝试将订单分配给票证 好的朋友 感谢您的提示 我通
  • 为什么在网关取消的订单状态没有转换为“ payment_pending ”?

    我正在使用 Magento 社区 ver1 6 1 0 我在 Magento wiki 上找到了这个状态图http www magentocommerce com wiki 2 magento concepts and architectu
  • 带有 React 的 Google Analytics 无法正常工作

    我在我的反应项目中使用谷歌分析 即使我在线 它也不会显示任何活跃用户 我尝试过在网上找到的不同方法 但似乎都不起作用 我只在本地主机上尝试过 而不是在已部署的网站上尝试过 但我认为它应该仍然有效 这是我的代码 我的应用程序 js impor
  • Magento 1.8 - 高级搜索不起作用

    我在最新版本的 magento 中发现了一个奇怪的错误 高级搜索工具无法正常工作 我做了什么 安装 magento 的新副本 在管理页面添加了一个名为 测试 1 的产品 重新索引全部 清除所有缓存 At the frontend page
  • 通过列计数拆分时重复表头

    我正在 Magento 中输出产品列表 作为包装在表格中的简单列表 由于此列表可能会很长 100 个以上产品 因此我使用了来自这里的想法 https stackoverflow com questions 21001803 how to h
  • Magento:设置刚刚创建的网站的配置值?

    我正在以编程方式创建网站 用户等 问题是 创建网站时 我无法立即设置配置值 Code
  • 在 Chrome 中加载analytics.js时出现307重定向

    我正在构建一个网络应用程序并使用 Google Analytics analytics js 进行分析 我最近注意到 Chrome 中的分析功能无法正常工作 我使用单独模块中的标准代码片段加载分析并通过 requirejs 包含 我已验证该
  • Magento 中的子域 htaccess 问题

    public html www domain com public html subdomain subdomain domain com public html htaccess public html subdomain htacces
  • Magento - 将特定父类别的子类别列为链接

    我是 php 的初学者 并且一直试图将一个父类别的子类别作为链接调用 我得到了这个 它调出了 getName 但 getUrl 根本没有返回任何 URL 输出代码只是 li a href name of sub a li
  • PHP Web 应用程序 (Magento) 遭到黑客攻击;这段黑客代码有什么作用?

    我刚刚安装的 Magento 1 3 2 4 被黑了 你能告诉我这段代码的目的是什么吗 另外 如何阻止这种情况以及如何发现漏洞 谢谢 function net match network ip ip arr explode network
  • Magento:如何在 CMS 页面中包含 php 调用

    按照此页面的说明进行操作 http www magento cc how to use php on a cms page html http www magento cc how to use php on a cms page html
  • Magento:获取给定产品的购物车数量

    我使用这个代码 items Mage getModel checkout cart gt getQuote gt getAllItems items Mage getSingleton checkout session gt getQuot
  • android Analytics v4 最简化

    我正在尝试以最简单的方式将谷歌分析连接到我的应用程序 我想实现analytics v4 因为google说他们很快就会强制升级到它 所以我不想做两次同样的工作 在这种情况下 谷歌的教程不是很有效 合并他们在那里所说的内容和我在互联网上找到的
  • 在产品页面上显示最近浏览过的产品

    magento 当前的默认功能是在类别页面的右侧显示最近查看的产品 现在我想在产品页面底部显示相同的内容 使用的 phtml 文件在位置命名为 frontend base default template reports product v
  • Magento 路由器 URL - 需要连字符的路径名称

    假设我使用自定义控制器 其 url 路径 前端名称为 customcategory 好吧 显然如果我有一个名为 TestController php 和indexAction的控制器文件 url 路径将是 customcategory te
  • 如何强制magento退出

    我在 magento 社区 1 6 工作 我需要在站点进程的一个阶段清除会话或注销当前用户 我将如何做到这一点 Mage getSingleton customer session gt logout
  • Google Analytics 点击已发送,但在 Analytics 控制台上不可见

    我一直在尝试按照 Google 官方文档中的步骤在我的应用程序中实现 Google Analytics 完成编码部分后 我转到分析控制台以查看是否收到任何点击 我等了将近2天 但没有看到任何进展 然后我尝试在 logcat 中使用 GAv4

随机推荐

  • 数据库转储到文本文件,对“行已完成”有副作用

    我试图让一个函数从 select 语句将数据库 sql 转储写入文本文件 返回的量可能非常大 我有兴趣尽快完成此操作 对于大型结果集 我还需要记录每个 x 间隔写入的总行数以及自上一个 x 间隔以来每秒写入的行数 我有一个 map 实际上在
  • 如何将 Spider 搜索添加到我的网站? “无法连接到数据库”

    我下载了蜘蛛搜索引擎 http www sphider eu 我目前正在尝试通过本地主机运行它 我将其提取到根文件夹中 并用 HTML 创建了一个搜索栏 div div
  • 如何指示 SharePoint 场在特定服务器上运行计时器作业?

    我们有一个 SP 计时器作业 运行良好一段时间 最近 管理员在场中加入了另一台服务器 因此 SharePoint 决定开始在此另一台服务器上运行此计时器作业 问题是服务器上没有安装所有依赖项 即 Oracle 因此作业失败 我只是在这里寻找
  • NumPy 数组中元素的索引[重复]

    这个问题在这里已经有答案了 在Python中 我们可以使用以下方法获取数组中值的索引 index 但是对于 NumPy 数组 当我尝试执行以下操作时 decoding index i I get AttributeError numpy n
  • 使用 Java 在网页上查找链接

    使用Java将网页的源代码存储在字符串中 我想提取源代码中的所有url并输出它们 我对正则表达式之类的东西很糟糕 甚至不知道如何解决这个问题 任何帮助将不胜感激 不要使用正则表达式 https stackoverflow com quest
  • 将 jLabel 移动到 jPanel 中的不同位置(类似 Pacman 的游戏)

    我正在制作像吃豆人这样的游戏 到目前为止我才刚刚从网格开始 我启动了网格 但我需要弄清楚如何将某些内容移动到网格中的不同位置 以便当用户单击或我的幽灵移动时 它将显示在屏幕上 我怎样才能让它动起来 我尝试了很多不同的方法 但没有一个对我有用
  • 安装 RavenDb Embedded 时出现 Nuget 依赖错误

    我正在尝试在 ASP NET MVC 5 应用程序中安装 RavenDB Embedded 但出现以下依赖项错误 PM gt Install Package RavenDB Embedded Attempting to resolve de
  • 由于缺少服务结构包,不会添加依赖项

    启动一个新的空 NET Core 2 类库 我尝试使用 nuget 添加任何依赖项 但出现此错误 错误本地源 C Program Files Microsoft SDKs Service Fabric packages 不存在 但服务结构应
  • 在嵌套模型轨道中传递数组隐藏字段

    我认为有以下代码 参数在控制台中传递 Parameters authenticity token gt LJ ZME2lHZ7VwCDgPKX6OFe326fXSXo5UB4M0cPwbCE esthour gt rfp id gt 6 e
  • 在 ListView 顶部添加“正在加载”图像

    我想添加一个 正在加载 Image在我的顶部ListView当所有项目都在加载时 如果有很多项目正在加载 我仍然希望有一个良好的用户体验 所以我想要一个浮动的Image 动画 GIF 在我的上面ListView 如何解决这个问题 一旦有了浮
  • 在 Android Java 应用程序中使用 Kotlin AAR 时出现 java.lang.NoClassDefFoundError

    我必须在 Kotlin 中创建一个库 aar 并且必须在使用 Java 制作的 Android 应用程序中使用它 Kotlin 库有一个带有伴随函数的类 可以在 Java 应用程序中静态使用 当我在 Java 的 Android 应用程序中
  • data.table 1.8.1.:“DT1 = DT2”与 DT1 = copy(DT2) 不同吗?

    我注意到使用不同的赋值运算符时 data table 中存在一些不一致 对我来说不一致 的行为 我不得不承认我从来没有完全理解 和copy 之间的区别 所以也许我们可以在这里阐明一些观点 如果您使用 或 请执行以下命令 你就会明白我的意思
  • C# 中集中使用关键字

    有没有办法在 C 中制作单个 头 类型文件 在 C 中 您有类似 Mainheader h 的内容 其中包含您的所有包含内容 有没有一种方法可以对 C 执行类似的操作 其中您有一个包含所有 using 关键字的文件 现在我有很多使用 例如
  • MVC,从页面中的多个部分视图传回值

    当我尝试从包含相同部分视图两次的页面传回值时 我遇到了问题 我的类定义如下 public class Account IEntity public decimal CurrentBalance get set public List
  • 将 C# 委托的调用约定更改为 CDECL

    我在使用DotNet1 1时C 也遇到过这个问题 问题是这样的 我有一个非托管 dll 它有一个接受函数指针 以及其他参数 的函数 当我在 C 代码中声明 DLLImport 时 我传递了一个委托 但是 C 中的代表有stdcall调用约定
  • PowerShell - 删除文本文件的所有行,直到找到特定字符串

    我目前有一个输出日志文件 有点混乱并且增长很快 这是一个授予邮箱权限的大型脚本的调试输出 我基本上只想删除文件中的每一行 直到找到 7 天前日期的第一次迭代 到目前为止 我可以返回包含该日期的所有行 content Get Content
  • 如何隐藏通过 JavaScript 对话框提示输入的密码?

    如何在 JavaScript 的对话框提示中隐藏用户输入的密码 例如 使用类似的东西 var passwd prompt Enter Password your password here 我希望这样 例如12345输入后 看起来像 or
  • 以结构作为参数的通用函数?

    struct Item1 a u32 struct Item2 a u32 b u32 fn some helper function item Item1 Basically item could be of type Item1 or
  • Angular2 - *ngFor / 使用数组循环遍历 json 对象

    想要循环遍历json对象 Defined on component side jsonObj 1 title title1 desc desc1 2 title title2 desc desc2 3 title title3 desc d
  • Magento 中产品详细信息页面上的自定义变量

    UPDATE 希望这是对问题的更好解释 我正在尝试使用以下方法将产品详细信息页面上的产品 SKU 传递给 Google Analytics setCustomVar 我在 Magento 1 4 0 1 上运行 我的 Analytics 异