2016-11-15 65 views
0

我正在使用DuracellTomi数据层插件将购物车数据从woocommerce推送到GTM模型以处理一些跟踪。如何通过GTM中的数据层标签进行动态索引?

的DuracellTomi插件推内容到transactionProducts []阵列中的格式如下:

transactionProducts: Array[1] 
0 : Object 
category:"" 
currency:"USD" 
id:8 
name:"Test" 
price:100 
quantity:"1" 
sku:8 

我想通过这个数组循环和它拆散成三个单独的阵列,价格表,skulist和quantitylist 。目前,我预计这样的一些变化对

//Get Product Information 
    if(stack = {{transactionProducts}}){ 
    for(i = 0; i < stack.length; i++) { 
     if(stack.i.sku){ 
      skulisttemp.i = stack.i.sku; 
      } 
     if(stack.i.price){ 
      pricelisttemp.i = stack.i.price; 
      } 
     if(stack.i.sku){ 
      quantitylisttemp.i = stack.i.quantity; 
      } 
     } 
    {{skulist}} = skulisttemp; 
    {{pricelist}} = pricelisttemp; 
    {{quantitylist}} = quantitylisttemp; 

    } 

显然,这是不会因为标签引用是如何设置的工作,但我不知道是否有人已经处理了这一点,并知道什么最好的办法通过这些数组索引可能是。 (对于那些不知道的人来说,方括号数组调用不适用于GTM变量,而是使用。格式。)

+0

你最后一句,在半空中结束。在某些情况下,在自定义HTML标记中使用纯Javascript可能更有效(评估GTM变量是一项昂贵的操作),但很难用这个不完整的句子来说明。无论如何,你不能以这种方式分配变量,你必须使用datalayer.push。 –

回答

0

您需要创建3个变量类型的自定义JavaScript函数,以选择您所需的dataLayer中的值并将其返回到数组中。 喜欢的东西

function(){ 
var products = {{transactionProducts}}; 
var skuArray = []; 
for(i = 0; i < products.length; i++) { 
    if(products[i].sku){ 
     skuArray.push(products[i].sku) 
    } 
} 
return skuArray 

}

希望这有助于你:)

+0

这几乎就是我最终做的。感谢您的答复。将变量分解为自定义html真的有帮助。 – itchyspacesuit

相关问题