【发布时间】:2017-01-19 18:02:24
【问题描述】:
我想在 Prestashop 的订单确认页面中为 GTM 添加一个数据层。
所以就像在 Smarty 文档中一样,我使用 {literal}、{ldelim} 和 {rdelim}。
我的脚本需要动态才能将正确的数据发送到 GTM,这取决于客户端刚刚传递的命令。
我修改了header.tpl文件,因为我需要将JS放在GTM标签之前。
这是我的代码:
{if isset($page_name) && $page_name|escape:'html':'UTF-8' == "order-confirmation"}
{literal}
<script>
{/literal}
window.dataLayer = window.dataLayer || []
dataLayer.push({ldelim}
'transactionId': '{$id_order}',
'transactionTotal': {$total_paid_tax_incl},
'transactionProducts': [
{foreach from=$products item=product}
{ldelim} // List of productFieldObjects.
'sku': '{$product.id}',
'name': '{$product.name}', // Name or ID is required.
//'category': '{$product.X}',
'price': {$product.price},
'quantity': 1 // Optional fields may be omitted or set to empty string.
{rdelim}{if !$smarty.foreach.product.last},{/if}
{/foreach}
]
{rdelim});
{literal}
</script>
{/literal}
{/if}
结果是什么都没有显示...但是如果我删除了
{literal}<script>{/literal}
和
{literal}</script>{/literal}
部分,JS 显示正常,但当然在 a 之外
<script>...</script>...
感谢您的帮助,
知觉
【问题讨论】:
标签: javascript smarty prestashop google-tag-manager