0

我正在尝试配置高级电子商务分析以从订单确认页面读取交易数据。

我正在从 Dom 元素中抓取数据,因为这是我唯一可用的选项。

我能够读取 transactionId、transactionTotal、transactionShipping 等字段,但无法读取 transactionProducts。(我只能阅读 1 个产品,但如果订单中有多个产品,则不能再阅读)。

我的数据层已添加为自定义 HTML 标记,如下所示 -

<script>      
window.dataLayer = window.dataLayer || []  
    dataLayer.push({
        'transactionId': {{transactionId}},
        'transactionAffiliation': 'Company name',    
        'transactionTotal': {{transactionTotal}},
        'transactionTax': 0,
        'transactionShipping': {{transactionShipping}},
        'transactionProducts': [{
            'sku':  {{productCode}},
            'name': {{transactionName}},
            'category': 'Generic category',
            'price': {{transactionPrice}},
            'quantity': {{transactionQuantity}}
        }]
    });
</script>

这些字段是自定义 JavaScript 变量。

例如 -

交易 ID -

function() {
    var transactionId = document.querySelector([id*='OrderNumberValue']").textContent;
return transactionId;
}

在确认页面上触发标签后,数据层如下所示(如您所见,当订单中有 2 个产品时,仅返回 1 个交易产品)-

Window Loaded:
    {event: 'gtm.load'}
    transactionId: '1000001',
    transactionAffiliation: 'Company name',
    transactionTotal: '10.00',
    transactionTax: 0,
    transactionShipping: '0.00',
    transactionProducts: [
    {
        sku: 'SAMPLE1',
        name: 'Sample product',
        category: 'Generic category',
        price: '5.00',
        quantity: '1'
    }]
}
{gtm.start: 1474472447660, event: 'gtm.js'}

非常感谢任何建议。

谢谢

4

1 回答 1

0

只要您不显示产品的 HTML 外观,这并不是真正可以回答的,但基本上您会在包含产品的元素上使用 Document.querySelectorAll,然后遍历结果并从内部元素中选择值每个单独的结果。分配给(临时)产品对象,添加到您的 transactionproducts,等等。

var results= document.querySelectorAll('.product');

transactionProducts = [];
for (i = 0; i < results.length; ++i) {
 result = results[i];
 tmp = {};
 tmp.price = result.querySelector('.sku').textContent;
 tmp.price = result.querySelector('.price').textContent;
 transactionProducts.push(tmp);
}

没有经过真正的测试或任何东西(当然有更优雅的迭代节点列表的方法),但这应该给你一个想法。

于 2016-09-21T20:22:03.830 回答