如何在dataLayer.push()方法中发送动态值?

时间:2018-04-23 07:16:48

标签: google-analytics google-tag-manager

我正在开发电子商务网站,我正在使用Google跟踪代码管理器(GTM)来分析数据流。所以现在我需要向GTM发送一些电子商务预订数据。对于单车价值,一切看起来都不错。但是当存在多个购物车价值时,我无法格式化我需要的数据层阵列。以下代码适用于单个购物车价值,请帮我对多个购物车项目进行相同操作。

foreach($_SESSION['test']['item'] as $key => $value) {
      dataLayer.push({
        'event': 'Thankspage',
        'itemname': [
        {
        'name': '<?php echo $_SESSION['test']['item']['item-name']; ?>',
        'itemCode': '<?php echo $_SESSION['test']['item']['itemCode']; ?>',
        'price': '<?php echo $_SESSION['test']['item']['item-price']; ?>'
        }],
        'totalprice': '<?php echo $_SESSION['test']['total-price']; ?>',
      });
}

我尝试使用这个foreach循环,但我会多次获得'event': 'Thankspage',如果有多个项目我需要如下所示的结构:

dataLayer.push({
  'event': 'Thankspage',
  'itemname': [
  {
  'name': 'Business Analysis Essentials',
  'itemCode': 'BA-ESS',
  'price': '1145.00'
  },
  {
  'name': 'BABOK Foundation',
  'itemCode': 'CGABAB3FCD',
  'price': '595.00'
  }],
  'totalprice': '1740.00'
});

请在这方面帮助我。

1 个答案:

答案 0 :(得分:2)

问题是你要为for循环的每次迭代发送dataLayer,你需要做的是先创建数组,然后将所有数据一起发送。例如(以下代码未经测试):

var itemsArray = []; //initialize empty array
var totalPrice; //initialize total price

foreach($_SESSION['test']['item'] as $key => $value) {
    //code below will add all items in the itemsArray (no push to GTM yet)
    itemsArray.push(
      {
      'name': '<?php echo $_SESSION['test']['item']['item-name']; ?>',
      'itemCode': '<?php echo $_SESSION['test']['item']['itemCode']; ?>',
      'price': '<?php echo $_SESSION['test']['item']['item-price']; ?>'
      }     
    });
    totalPrice = '<?php echo $_SESSION['test']['total-price']; ?>';
}

//once all items are in the itemsArray we will push the event to dataLayer
dataLayer.push({
    'event': 'Thankspage',
    'itemname': itemsArray,
    'totalprice': totalPrice,
});