Я хочу добавить DataLayer для GTM на странице подтверждения заказа на Prestashop. Так как это точно в документации Smarty, я использую {literal}
, {ldelim}
и {rdelim}
.GTM, Prestashop и Smarty {literal}
Мой сценарий должен быть динамическим для отправки правильных данных в 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 является отображающий штраф, но, конечно, за пределами
<script>...</script>
...
Спасибо за помощь,
Perceval
Спасибо за ваш ответ. попробовал ваш код, но он не работает ... Smarty заставляют меня сходить с ума><' – percypyan
Да ... умный это не здорово ... Что не работает? – sarcom