2017-01-19 3 views
0

Ich möchte eine DataLayer für GTM auf meiner Bestellbestätigungsseite auf Prestashop hinzufügen. So wie es in der Smarty-Dokumentation genau ist, verwende ich {literal}, {ldelim} und {rdelim}.GTM, Prestashop und Smarty {literal}

Mein Skript muss dynamisch sein, um die korrekten Daten an GTM zu senden, hängt von der Anweisung ab, die der Client gerade übergeben hat.

Ich ändere die header.tpl-Datei, da ich die JS vor dem GTM-Tag setzen muss.

Hier mein Code:

{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} 

Das Ergebnis wird nichts angezeigt wird ... aber wenn ich die entfernen

{literal}<script>{/literal} 

und die

{literal}</script>{/literal} 

Teil, der JS ist Anzeige fein, aber natürlich außerhalb einer

<script>...</script> ...

Danke für die Hilfe,

Perceval

Antwort

0

ich für Sie einige kleine Korrekturen vorgenommen werden:

{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} 

Es ist immer schwierig Smarty Code Netz oben mit js, in Ihrem Fall schlage ich nicht die Verwendung von {literal} Tag, versuchen und lassen Sie mich wissen;)

+0

Danke für Ihre Antwort, ich habe habe deinen Code ausprobiert, aber es funktioniert nicht ... Smarty mach mich verrückt><' – percypyan

+0

Yeah ... schlau, es ist nicht großartig ... Was ist nicht Arbeit? – sarcom

Verwandte Themen