Javascript 如何将PHP变量传递给数据层中的多个GA产品数组

Javascript 如何将PHP变量传递给数据层中的多个GA产品数组,javascript,php,google-analytics,google-tag-manager,data-layers,Javascript,Php,Google Analytics,Google Tag Manager,Data Layers,我试图在商店的“谢谢”页面上设置Google Analytics来跟踪购买情况,但我很难将购买的每一件商品都发送到Google Analytics 我的当前代码正在获取最后的产品详细信息,但我需要所有已售出商品的详细信息 这就是我正在使用的PHP: <? $i=1;foreach($previousorder->LineItems->OrderDetailLineItems as $order){ $previousOrderHTML = "";

我试图在商店的“谢谢”页面上设置Google Analytics来跟踪购买情况,但我很难将购买的每一件商品都发送到Google Analytics

我的当前代码正在获取最后的产品详细信息,但我需要所有已售出商品的详细信息

这就是我正在使用的PHP:

<? $i=1;foreach($previousorder->LineItems->OrderDetailLineItems as $order){
        $previousOrderHTML = "";
        if($i == 2){
            $i=1;
            $class = " odd";
        }else{
            $i++;
            $class = "";
        }
        if(!$order->LineDiscountAmountGross == "0"){
            $lineDiscount = sprintf('<span class="required">-%s</span>', $locale->formatCurrency($order->LineDiscountAmountGross, $nwc->getTemplateValue("lb_CurrencySymbol")));
        }else{
            $lineDiscount = "-";
        }
        $previousOrderHTML .= sprintf('<tr><td align="left" valign="top" class="extra-padding first-column details-row-one%s">%s</td><td align="left" valign="top" class="item-name extra-padding details-row-one%s">%s %s %s', $class, $order->ProductCode, $class, $order->ProductGroupName,  $order->Size,  $order->Colour);
        if(isset($order->BundleProductList->PriceListBundleProductList) && count($order->BundleProductList->PriceListBundleProductList) >= 1){
            $previousOrderHTML .= '<span class="offer-small">';
            foreach($order->BundleProductList->PriceListBundleProductList as $bundleItem){
                $previousOrderHTML .= sprintf("<br />- %s %s %s (%s) - %s %s", $bundleItem->ProductGroupName, $bundleItem->Size, $bundleItem->FabricColour, $bundleItem->ProductCode, $nwc->getValue("lb_RRP"), $locale->FormatCurrency($bundleItem->Original_GROSS_Price));
            }
            $previousOrderHTML .= '</span>';
        }
        $previousOrderHTML .= sprintf('</td><td align="left" valign="top" class="extra-padding details-row-one%s">%s</td><td align="center" valign="top" class="extra-padding details-row-one%s">%s</td><td align="right" valign="top" class="extra-padding details-row-one%s">%s</td></td><td align="right" valign="top" class="extra-padding details-row-one last-column%s">%s</td></tr>', $class, $locale->formatCurrency($order->RRP, $nwc->getTemplateValue("lb_CurrencySymbol")), $class, $order->Quantity, $class, $lineDiscount, $class, $locale->formatCurrency($order->GrossDiscountPrice, $nwc->getTemplateValue("lb_CurrencySymbol")));
        echo $previousOrderHTML;
    }
    ?>
循环中的
:
foreach($order->BundleProductList->PriceListBundleProductList作为$bundleItem){
'...
}
尝试使用PHP在JavaScript变量中创建对象数组(productFieldObjects列表),如“[{…},{…},{…},{…}]”,示例:

[
  {'name': prodname1,
   'id': prodid1,
   'price': rrp1,
   'quantity':qnty1
   },
  {'name': prodname2,
   'id': prodid2,
   'price': rrp2,
   'quantity':qnty2
   },
  {'name': prodname3,
   'id': prodid3,
   'price': rrp3,
   'quantity':qnty3
   }
]
然后在推送中,将此值分配给“产品”键:

//...
'purchase': {
    'actionField': {
    'id': '...',
    'affiliation': '...',
    'revenue': ...,
    'tax': ...,
    'shipping': ...,
},
'products': YOUR_ARRAY_OF OBJECTS // <-- HERE
//...
/。。。
“购买”:{
“actionField”:{
“id”:“…”,
“隶属关系”:“…”,
“收入”:。。。,
“税”:。。。,
“航运”:。。。,
},

“products”:您的对象数组//谢谢Michele-我尝试了这个方法,但没有成功。没有数据被推送到数据层您是否在标记管理器中配置了“purchase”事件标记(由名为“purchase”的自定义事件触发)并在该标签中激活“启用增强的电子商务功能”和“使用数据层”?但是,如果问题不是发送到分析,而是仅发送推送值​​可以如上所述进行解决,这取决于如何在循环中构建变量,检查控制台中是否没有JavaScript错误。
//...
'purchase': {
    'actionField': {
    'id': '...',
    'affiliation': '...',
    'revenue': ...,
    'tax': ...,
    'shipping': ...,
},
'products': YOUR_ARRAY_OF OBJECTS // <-- HERE
//...