在设计Adobe Analytics的布署方案中,有时候为了便于分析,会将上一个页面设置为一个eVar或props。在Adobe Launch有提供内置的方式可以获取上一个页面。
插件:getPreviousValue
Adobe Consulting 团队提供了插件getPreviousValue,插件允许您将一个变量设置为在上一次点击时设置的值。
首先是是安装这个插件,插件的代码如下:
/* Adobe Consulting Plugin: getPreviousValue v3.0 */
function getPreviousValue(v,c){var k=v,d=c;if("-v"===k)return{plugin:"getPreviousValue",version:"3.0"};var a=function(){if("undefined"!==typeof window.s_c_il)for(var c=0,b;c<window.s_c_il.length;c++)if(b=window.s_c_il[c],b._c&&"s_c"===b._c)return b}();"undefined"!==typeof a&&(a.contextData.getPreviousValue="3.0");window.cookieWrite=window.cookieWrite||function(c,b,f){if("string"===typeof c){var h=window.location.hostname,a=window.location.hostname.split(".").length-1;if(h&&!/^[0-9.]+$/.test(h)){a=2<a?a:2;var e=h.lastIndexOf(".");if(0<=e){for(;0<=e&&1<a;)e=h.lastIndexOf(".",e-1),a--;e=0<e?h.substring(e):h}}g=e;b="undefined"!==typeof b?""+b:"";if(f||""===b)if(""===b&&(f=-60),"number"===typeof f){var d=new Date;d.setTime(d.getTime()+6E4*f)}else d=f;return c&&(document.cookie=encodeURIComponent(c)+"="+encodeURIComponent(b)+"; path=/;"+(f?" expires="+d.toUTCString()+";":"")+(g?" domain="+g+";":""),"undefined"!==typeof cookieRead)?cookieRead(c)===b:!1}};window.cookieRead=window.cookieRead||function(c){if("string"===typeof c)c=encodeURIComponent(c);else return"";var b=" "+document.cookie,a=b.indexOf(" "+c+"="),d=0>a?a:b.indexOf(";",a);return(c=0>a?"":decodeURIComponent(b.substring(a+2+c.length,0>d?b.length:d)))?c:""};var l;d=d||"s_gpv";a=new Date;a.setTime(a.getTime()+18E5);window.cookieRead(d)&&(l=window.cookieRead(d));k?window.cookieWrite(d,k,a):window.cookieWrite(d,l,a);return l};
/******************************************** END CODE TO DEPLOY ********************************************/
可以用自定义代码编辑器安装,也可以AppMeasurement 安装,或是Adobe Analytics的Extensions里安装,方式有多样的。
安装后就可以使用这个插件了,这个插件的用法的是
getPreviousValue(v,c)
v
(字符串,必需):具有要传递给下一个图像请求的值的变量。用于检索上一页值的常用变量为s.pageName
。c
(字符串,可选):用于存储值的 Cookie 的名称。如果未设置此参数,则将默认使用"s_gpv"
。
调用此函数时,将返回 Cookie 中包含的字符串值。然后,此插件会重置 Cookie 过期时间,并为其分配 v
参数中的变量值。该 Cookie 将在处于非活动状态 30 分钟后过期。
它的作用就是当执行的时候,V是当前页面,C是存储在cookie的是上一级页面,它会获取cookie里的值,也即是Previous Page,然后将当前页面V更新到cookie里。
现在我访问页面A-B-C,然后将previous page设置为prop1,看看它们在不同页面的时候的赋值是怎样的
- 访问页面A:getPreviousValue(v,c) ,v是A,c为空,Cookie里为A
- 访问页面B:getPreviousValue(v,c) ,Cookie里为A,v是B,c为A,cookie为B
- 访问页面C:getPreviousValue(v,c) ,cookie里为B,v是C,c为B,cookie里为C
如果在访问的过程中涉及到事件,那么就不一样,假设用户在访问B之前触发了事件E,发送的Server call的顺序就是A-E-B-C
- 访问页面A:getPreviousValue(v,c) ,v是A,c为空,Cookie里为A
- 访问页面B:getPreviousValue(v,c) ,Cookie里为E,v是B,c为E,cookie里为B
- 访问页面C:getPreviousValue(v,c) ,cookie里为B,v是C,c为B,cookie里为C
访问页面B的时候,它的Previous Page是E里面,也就是事件里面的页面,看事件在哪个页面触发,如果在A页面触发,那么这时候的E就是A,如果是在B触发,那么E就是B。
Cookie
将页面写到Cookie,如访问Page A的时候,将Page A写入到cookie,当访问Page B的时候,从Cookie里获取Page A设置eVars/prop,然后同时将Page B写入到Cookie里。