如何在 dataLayer.push() 方法中发送动态值?
How to send dynamic values in dataLayer.push() method?
我在电子商务网站上工作,我在其中使用 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'
});
请在这方面帮助我。
问题是您要为 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,
});
我在电子商务网站上工作,我在其中使用 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'
});
请在这方面帮助我。
问题是您要为 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,
});