【问题标题】:Local Google Analytics Ecommerce plugin本地 Google Analytics 电子商务插件
【发布时间】:2015-03-27 08:48:49
【问题描述】:

我使用本地版本的 analytics.js 作为没有互联网连接的用户的后备(但在这种情况下他们可以访问此服务器)。它工作正常,但我这样做了:

ga("require", "ecommerce");

这似乎是从 www.google-analytics/plugins/wa/ecommerce.js 下载的。有什么办法改变吗?

编辑 我正在尝试代理 GA,并且正在使用 analytics.js 的本地副本和 sendHitTask 将答案重定向到我自己的控制器,然后从那里将流量代理到 Google 分析服务器。服务器有互联网连接,用户没有。你可以在这里阅读更多关于我的情况:Google Analytics proxy

【问题讨论】:

标签: google-analytics


【解决方案1】:

如果您想在本地托管 GA 库,那是您自己的问题 :-)

如果您确实走这条路,请确保您了解 ec.js 和 ecommerce.js 是两个不同的库(ec.js 仅用于增强型商务)

你确实可以使用类似这样的设置:

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.yoursite.local/analytics.js','ga');

  ga('create', 'UA-12345678-1', 'auto');

  (function(){var f=window,g="push",k="length",m="prototype",n={action:"pa",promoAction:"promoa",id:"ti",affiliation:"ta",revenue:"tr",tax:"tt",shipping:"ts",coupon:"tcc",step:"cos",label:"col",option:"col",options:"col",list:"pal",listSource:"pls"},p={id:"id",name:"nm",brand:"br",category:"ca",variant:"va",position:"ps",price:"pr",quantity:"qt",coupon:"cc","dimension(\\d+)":"cd","metric(\\d+)":"cm"},q={id:"id",name:"nm",creative:"cr",position:"ps"},r=function(a,d){this.name=a;this.source=d;this.e=[]},t=function(a){if(a.get&&
    a.set){this.clear();var d=a.get("buildHitTask");a.set("buildHitTask",s(this,d))}};t[m].clear=function(){this.b=void 0;this.c=[];this.a=[];this.d=[]};t[m].i=function(a,d){var c=d||{};"promo_click"==a?c.promoAction="click":c.action=a;this.b=u(c)};t[m].g=function(a){(a=u(a))&&this.c[g](a)};t[m].f=function(a){var d=u(a);if(d){var c,b=a.list||"";a=a.listSource||"";for(var e=0;e<this.a[k];e++)if(this.a[e].name==b){c=this.a[e];break}c||(c=new r(b,a),this.a[g](c));c.e[g](d)}};
    t[m].h=function(a){(a=u(a))&&this.d[g](a)};var s=function(a,d){return function(c){var b,e,h;a.b&&v(n,a.b,c,"&");for(b=0;b<a.c[k];b++)e="&pr"+(b+1),v(p,a.c[b],c,e);for(b=0;b<a.a[k];b++){h=a.a[b];e="&il"+(b+1);h.name&&c.set(e+"nm",h.name,!0);h.source&&c.set(e+"ls",h.source,!0);for(var l=0;l<h.e[k];l++)v(p,h.e[l],c,e+"pi"+(l+1))}for(b=0;b<a.d[k];b++)e="&promo"+(b+1),v(q,a.d[b],c,e);a.clear();return d(c)}};
    function u(a){var d=0,c={};if(a&&"object"==typeof a)for(var b in a)a.hasOwnProperty(b)&&(c[b]=a[b],d++);return d?c:void 0}function v(a,d,c,b){for(var e in d)if(d.hasOwnProperty(e))for(var h in a)if(a.hasOwnProperty(h)){var l=e.match("^"+h+"$");l&&c.set(b+a[h]+l.slice(1).join(""),d[e],!0)}}function w(a,d){t[m][a]=function(){return d.apply(this,arguments)}}
    (function(){f.gaplugins=f.gaplugins||{};f.gaplugins.EC=t;w("setAction",t[m].i);w("addProduct",t[m].g);w("addImpression",t[m].f);w("addPromo",t[m].h);w("clear",t[m].clear);var a=f.GoogleAnalyticsObject||"ga";f[a]=f[a]||function(){(f[a].q=f[a].q||[])[g](arguments)};f[a]("provide","ec",t)})();})();

  ga('send', 'pageview');

  /*
    transaction details go here
  */

</script>

现在请记住,如果您的用户没有互联网连接,流量和交易不会被记录,除非您也托管数据收集。

【讨论】:

  • 自从我回答了他之前的一个问题,我可以说托尼知道这一点 - 他实际上使用测量协议通过他自己的服务器代理了 GA 请求。问题是他仍然想使用 GA 自己的库,而不是自己组装请求。
  • 啊,我明白了,如果 Tony 也模拟 /collect 调用,那会起作用。
  • 是的,我应该提到这一点。我会提供更多信息:)
  • 但是,你说得有道理...我可以直接包含 ecommerce.js 的内容...但是 analytics.js 是异步加载的,所以我认为如果电子商务可能会出现问题。 js 在analytics.js 之前加载?
猜你喜欢
  • 2014-09-17
  • 1970-01-01
  • 2014-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-01
  • 2013-01-08
  • 1970-01-01
相关资源
最近更新 更多