URL 参数

SocialMaster H5 监测方案支持自定义 URL 参数。自定义 URL 参数可用于场景标注识别、参数传递等,可以帮助实现页面的强大功能。

一个完整的带有参数的 URL 示例如下,其中包含自定义参数和系统保留参数

http://domain.com/a.php?state=xxxx&openid=yyyy&smt_b=zzzz&custom_var1=v1&custom_var2=v2

自定义参数

页面分享到朋友圈或好友,好友点进来一定是进入首页的。

如果网站首页地址为 http://domain.com/a.php 则默认分享链接为依然为 http://domain.com/a.php

如果希望分享后,点击链接进入http://domain.com/b.php ,则需要作如下方法。

var opt = {
  title: '朋友圈标题',  // 分享到朋友圈的标题
  imgUrl: '图片地址', // 分享到朋友圈的图片地址
  qs: function() { // 通过此方法向入口地址传参, code,state,appid,openid 为系统保留参数,不能使用
    return 'redirect=b.php'; // 务必返回完整 querystring,不带问号; 我们不会做跳转, 仅做参数传递, 需要开发者自己在首页的服务端处理跳转逻辑
  }
};
SM_TRACK.setTimeLine(opt);

这样,当好友点击分享链接时, 会进首页, 但会带参数 http://domain.com/a.php?redirect=b.php

此时,可在 a.php 做判断。如果页面 URL 中包含 redirect=b.php,则跳转到 http://domain.com/b.php。

注意, 请务必openid, state, smt_b/smtid复制到目标页的 URL 中, 检测代码依赖这些参数

eg. http://domain.com/b.php?state=xxxx&openid=yyyy⪪_b=zzzz

监测代码依赖的条件是: 用户看见的第一个页面(即响应200的页面, 之前做过多少次跳转都没关系)的地址上有依赖的参数

这个办法适用于活动中有多种类型页面的场景,比如:

  return 'page_id=15'; // 分享 id 为 15 的页面
  return 'picture_id=8'; // 分享 id 为 8 的图片
  return 'product_id=3'; // 分享 id 为 3 的商品

也可采用如下方法实施前端页面跳转, 此时就不必备在意复制参数的问题了:

$(function() {
  var m = /page_id=(\w+)/.exec(location.search); // 获取 URL 中的 page_id 参数
  if(m) {
    location.href = 'b.php?page_id=' + m[1]; // 跳转到 b.php 并指明 page_id
    /* 注:跳转不能跨域 */
  }
})

与track,site打通时, 如果还需要分享出去的链接也带smt_*参数, 请参考如下代码

var opt = {
  imgUrl: '....'
  qs: function() {
    var o = Qs(location.search);
    return ['smt_cp='+(o.smt_cp||''), 'smt_pl='+(o.smt_pl||''), 'smt_md='+(o.smt_md||'')].join('&');
  }
}
SM_TRACK.setTimeLine(opt);

其中的Qs方法实现了从url中提取参数, 也可使用服务器端功能实现类似的功能

var Qs = function(search) {
  var o, str;
  o = {};
  str = search.slice(1);
  if (!str) {
    return o;
  }
  $.each(str.split('&'), function(i, e) {
    var k, v, _ref;
    _ref = e.split('='), k = _ref[0], v = _ref[1];
    return o[k] = v;
  });
  return o;
};

系统保留参数

当用户授权之后进入活动首页, 页面 URL 中会默认携带如下参数:

  • openid(一定有): 可以在后端进行保存, 然后在获取完整用户信息后补全其他字段
  • state(一定有): 微信保留参数,监测代码依赖
  • smt_*/smtid(可能有): 与 TrackMaster/SiteMaster 产品打通后会有

注:以上参数为系统保留参数,自定义参数时不得使用这些变量名

此页文档中的代码应位于 </body> 之前。

results matching ""

    No results matching ""