【问题标题】:How do I pass PHP variables to multiple GA product arrays in datalayer如何将 PHP 变量传递给数据层中的多个 GA 产品数组
【发布时间】:2019-12-30 14:04:53
【问题描述】:

我正在尝试在商店的“谢谢”页面上设置 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;
    }
    ?>

这是将数据推送到 Google Tag Manager 和 Google Analytics 数据层的 Javascript

<script type="text/javascript">
    $(function(){
        var cartTot = '<?=$previousorder->TotalOrderAmountExVAT;?>';
        var curr = '<?=$ShoppingCartSummary->Currency;?>';
        var ref = '<?=$previousorder->OurReferenceNumber;?>';
        var vatx = '<?=$previousorder->TotalVATAmount;?>';
        var prodid = '<?=$order->ProductCode;?>';
        var prodname = '<?=$order->ProductGroupName;?>';
        var rrp = '<?=$order->RRP;?>';
        var qnty = '<?=$order->Quantity;?>'
            dataLayer.push({
              'ecommerce': {
                'purchase': {
                  'actionField': {
                    'id': ref,                         // Transaction ID. Required for purchases and refunds.
                    'affiliation': 'Online Store',
                    'revenue': cartTot,                // Total transaction value (incl. tax and shipping)
                    'tax': vatx,
                    'shipping': '',
                  },
                  'products': [{          // List of productFieldObjects.
                    'name': prodname,     // Name or ID is required.
                    'id': prodid,
                    'price': rrp,
                    'quantity':qnty,       // Optional fields may be omitted or set to empty string.
                   }]
                }
              }
            });

请问,我怎样才能获得每件售出商品的产品详细信息?

非常感谢

【问题讨论】:

    标签: javascript php google-analytics google-tag-manager data-layers


    【解决方案1】:

    在循环中: foreach($order->BundleProductList->PriceListBundleProductList as $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
    //...
    

    【讨论】:

    • 谢谢你 Michele - 我试过了,但没用。没有数据被推送到数据层
    • 您是否在跟踪代码管理器中配置了“purchase”事件代码(由名为“purchase”的自定义事件触发)并在该代码中激活“启用增强型电子商务功能”和“使用数据层” ?但是,如果问题不是发送到分析,而只是您可以如上所述解决的推送值,这取决于您如何在循环中构建变量,请检查您是否在控制台中没有收到 JavaScript 错误。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    • 2019-08-18
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    相关资源
    最近更新 更多