【问题标题】:How can I apply GA download tracking with Sitecore?如何使用 Sitecore 应用 GA 下载跟踪?
【发布时间】:2011-12-26 15:13:48
【问题描述】:

在对这个问题的在线答案进行了大量研究之后,我将这个问题发布到 Stackflow b/c,但我没有找到一个直截了当的答案,我不得不自己做调查来解决这个问题。

基本上,Sitecore 对上传到媒体库的所有文件使用处理程序文件 .ASHX。由于我使用的第 3 方 GA 跟踪工具(entourage.js 或 gatags.js)无法将 .ashx 识别为列入白名单的下载文件,因此它没有将适当的 GA 跟踪语法添加到 GA 像素跟踪器 (__utm.gif)。

因此,解决方案很简单,但遗憾的是,没有追溯力,这意味着之前上传到 Sitecore 内容树中媒体库的所有文件都将继续使用 ashx 扩展名,除非您重新上传图片。在您的 web.config 文件中,搜索“Media.RequestExtension”设置。如果您将与此设置关联的值从“ashx”更改为空白字符串,这将强制 Sitecore 使用 Sitecore 媒体库中文件和图像的原始扩展名。

除了干扰 GA 分析之外,这种将每个可下载的文件扩展名转换为 ashx 文件的方法是糟糕的 SEO 做法。并且,Sitecore 不会为您指明绕过此问题的正确方向,而是采用迂回方式(google Sitecore 动态链接和配置),因为他们希望您使用他们的 Sitecore OMS 下载跟踪功能。就是这样!经过两天的研究,我得出了这个结论。

【问题讨论】:

    标签: google-analytics sitecore ashx


    【解决方案1】:

    您可以使用此脚本通过 Google Analytics 跟踪下载事件。

    if (typeof jQuery != 'undefined') {
    
                jQuery(document).ready(function($) {
                    var filetypes = /\.(zip|pdf|doc*|xls*|ppt*|jpg|ashx)$/i;
                    var baseHref = '';
                    if (jQuery('base').attr('href') != undefined) baseHref = jQuery('base').attr('href');
                    jQuery('a').each(function() {
                        var href = jQuery(this).attr('href');
                        if (href) {
    
                            if (href.indexOf('?') != '-1') {
                                href = href.substring(0, href.indexOf('?'));
                            }
    
                            if (href.match(filetypes)) {
                                jQuery(this).click(function() {
                                    var extension = String((/[.]/.exec(href)) ? /[^.]+$/.exec(href) : undefined);
                                    var filePath = String(href);
    
                                    _gaq.push(['_trackEvent', 'Download', extension, filePath]);
                                    if (jQuery(this).attr('target') != undefined && jQuery(this).attr('target').toLowerCase() != '_blank') {
                                        setTimeout(function() {
                                            location.href = baseHref + href;
                                        }, 200);
                                        return false;
                                    }
                                });
                            }
                        }
                    });
                });
            }
    

    只需在此行添加所需的文件类型 -

    var 文件类型 = /.(zip|pdf|doc*|xls*|ppt*|jpg|ashx)$/i;

    【讨论】:

      【解决方案2】:

      所以解决方案很简单,但遗憾的是,没有追溯力, 表示之前上传到媒体库中的所有文件 Sitecore 内容树将继续使用 ashx 扩展,除非 你重新上传图片。

      不确定您从何处获得此信息,但它不正确。您可以取消 Media.RequestExtension 设置,所有现有文件将使用其原始扩展名。在 IIS7 集成模式下,您应该能够进行此更改而无需更改其他服务器配置。

      编辑:更多信息

      如果您在反编译器中分析Sitecore.Configuration.Settings.Media.RequestExtension(与此设置等效的API),您可以看到它仅由MediaProvider 在构造媒体URL 时使用。 Sitecore 应该记住媒体的原始扩展名,并且可以使用其原始 URL 提供它,无论上传时此设置是什么。无论如何,这是我的经验,而且似乎可以通过查看 Sitecore.Kernel 来验证。

      【讨论】:

      • 您确定它具有追溯性吗?这是我的消息来源,指出它不具有追溯力--bit.ly/uyg0xs。另外,你所说的“空白”是什么意思?如,只需完全删除 'Meida.RequestExtension 设置?
      • 我在 IIS 6 和 7 中运行相同的环境,它们的行为都不同。在 IIS 6 中,无论 Media.RequestExtension 设置为什么,只有 .ashx 扩展名有效,但在 IIS 7 中,它会正确响应设置。不知道为什么,但我们在 IIS 6 服务器上所做的是使用 ISAPI 重定向将所有媒体 url 重定向到 ashx 扩展。这至少允许它们显示为 .jpg/.gif/.png 但仍由系统呈现。
      • 在询问其他朋友 IIS 6 和 7 处理显式文件类型(.jpg、.png、.gif 等)的原因后,因为 Mime 类型在它们到达管道之前对其进行了处理。 IIS 7 具有集成模式,因此 .NET 在呈现之前会咬住苹果。
      【解决方案3】:

      快速搜索了gatags.js,我可以看到您可以在第 24 行向白名单添加扩展:

      var isDoc = path.match(/\.(?:doc|eps|jpg|png|svg|xls|ppt|pdf|xls|zip|txt|vsd|vxd|js|css|rar|exe|wma|mov|avi|wmv|mp3)($|\&|\?)/);
      

      改成:

      var isDoc = path.match(/\.(?:ashx|doc|eps|jpg|png|svg|xls|ppt|pdf|xls|zip|txt|vsd|vxd|js|css|rar|exe|wma|mov|avi|wmv|mp3)($|\&|\?)/);
      

      或者,您可以使用 dom 选择器和点击事件自行附加 Google Analytics _trackEvent

      无论哪种方式,我认为 OMS 可以跟踪媒体库文件而不管扩展名如何 - 删除默认的 ashx 扩展名并不会停止 Sitecore 处理的文件。

      【讨论】:

      • 实际上,Adam,认为您之前/之后的代码 sneepit 贡献是相同的。当然,除非我错过了一些东西。
      • 您缺少 ashx 扩展 - var isDoc = path.match(/\.(?:ashx|doc
      猜你喜欢
      • 1970-01-01
      • 2012-11-17
      • 2018-01-17
      • 1970-01-01
      • 1970-01-01
      • 2014-05-02
      • 1970-01-01
      • 2012-11-17
      • 1970-01-01
      相关资源
      最近更新 更多