首页 > 解决方案 > 将 GCLID 参数转换为 Squarespace 隐藏字段

问题描述

我正在尝试从 URL 中提取 GCLID 参数(示例:https ://www.example.com?gclid=CjwKCAjwiMj2BRBFEiwAYfTbCjQ- LBlWhBymAH4piPD3FalPCbl24kE7VQ4JtNJ4Jfj8XPE )并将其插入到 Squarespace 隐藏字段中。

理想情况下,我想通过 GTM 脚本执行此操作,但我也可以通过站点范围的页脚代码注入将其直接添加到 Squarespace。所有 Squarespace 隐藏字段都以前缀“SQF”开头(在我的例子中,隐藏字段是:SQF_GCLID

我一直在玩这样的东西:

`<script>
window.Squarespace.onInitialize(Y, function() {
  /**
   * Get the URL parameters
   * source: https://css-tricks.com/snippets/javascript/get-url-variables/
   * @param  {String} url The URL
   * @return {Object}     The URL parameters
   */
  var getParams = function (url) {
    var params = {};
    var parser = document.createElement('a');
    parser.href = url;
    var query = parser.search.substring(1);
    var vars = query.split('&');
    for (var i=0; i<vars.length; i++) {
      var pair = vars[i].split('=');
      params[pair[0]] = decodeURIComponent(pair[1]);
    }
    return params;
  };

  /**
   * Get UTM parameters from the current URL, insert them into correspondingly-named Squarespace form hidden fields.
   */
  var params = getParams(window.location.href);
  var param;
  var paramMatch;
  var paramBase;
  var formFields;
  var i;
  for (param in params) {
    paramMatch = param.match(/^gclid(.*)/i);
    if (!paramMatch) {
        continue;
    }
    paramBase = paramMatch[1];
    formFields = document.getElementsByName("SQF_GCLID");
    i = formFields.length;
    while (i--) {
      if (formFields[i]) {
        formFields[i].value = params[param]; 
      }
    }
  }
});
</script>`

这是基于在此处找到的代码。

没有其他参数可以传递(只是 gclid)。

标签: google-tag-managersquarespacegoogle-ads-api

解决方案


我不完全确定为什么我以我的方式编写该代码(您引用了该代码),但是这个更简单的版本应该可以满足您的需要,并且对于 utm 以外的参数更灵活,如您的情况:

<script>
window.Squarespace.onInitialize(Y, function() {
  /**
   * Get the URL parameters
   * source: https://css-tricks.com/snippets/javascript/get-url-variables/
   * @param  {String} url The URL
   * @return {Object}     The URL parameters
   */
  var getParams = function (url) {
    var params = {};
    var parser = document.createElement('a');
    parser.href = url;
    var query = parser.search.substring(1);
    var vars = query.split('&');
    for (var i=0; i<vars.length; i++) {
      var pair = vars[i].split('=');
      params[pair[0]] = decodeURIComponent(pair[1]);
    }
    return params;
  };

  /**
   * Get UTM parameters from the current URL, insert them into correspondingly-named Squarespace form hidden fields.
   */
  var params = getParams(window.location.href);
  var param;
  var paramField;
  for (param in params) {
    paramField = document.getElementsByName("SQF_" + param.toUpperCase())[0];
    if (paramField) {
      paramField.value = params[param];
    }
  }
});
</script>

推荐阅读