2017-01-19 11 views
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> ...助けを

おかげで、

パーシヴァル

答えて

0

あなたのケースでは、私は{literal}タグの使用を提案していない、試してみてください;)

+0

あなたの答えをありがとう、私はあなたのコードを試してみましたが、うまくいきません... Smartyは私を狂ってしまいます><' – percypyan

+0

ええと...それはすばらしくないです...何が問題なのですか? – sarcom