0
Prestashopの注文確認ページでGTMのdataLayerを追加します。 Smartyのドキュメントの正確なように、私は{literal}
、{ldelim}
および{rdelim}
を使用します。GTM、PrestashopとSmarty {literal}
私のスクリプトは、GTMに正しいデータを送信するために動的である必要があります。クライアントが通過したコマンドに依存します。
GTMタグの前にJSを配置する必要があるため、header.tplファイルを変更します。
ここに私のコード:
{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があります罰金は表示されますが、当然です。
これは、とSmartyのコードをメッシュすることは常に難しいです{if isset($page_name) && $page_name|escape:'html':'UTF-8' == "order-confirmation"}
<script type="text/javascript">
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});
</script>
{/if}
:私はあなたのためのいくつかの小さな修正をしたよ
<script>...</script>
...助けを
おかげで、
パーシヴァル
あなたの答えをありがとう、私はあなたのコードを試してみましたが、うまくいきません... Smartyは私を狂ってしまいます><' – percypyan
ええと...それはすばらしくないです...何が問題なのですか? – sarcom