如何使用Sitecore应用GA下载跟踪?

时间:2011-11-10 23:25:49

标签: google-analytics sitecore ashx

我在网上对这个问题的答案进行了大量研究之后,将这个问题发布到了Stackflow b / c,我没有遇到过直接的答案,不得不做我自己的讨论来解决这个问题。 / p>

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

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

除了干扰GA分析之外,这种将每个可下载文件扩展名转换为ashx文件的方法都是糟糕的SEO实践。并且,Sitecore不会指出你在绕过这个方向的正确方向(谷歌Sitecore动态链接和配置),因为他们希望你使用他们的Sitecore OMS下载跟踪功能。就是这样!两天的研究使我得出了这个结论。

3 个答案:

答案 0 :(得分: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 filetypes = /。(zip | pdf | doc * | xls * | ppt * | jpg | ashx)$ / i;

答案 1 :(得分:0)

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处理文件。

答案 2 :(得分:0)

  

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

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

修改:更多信息

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