2012-08-30 71 views
1

我正在运行PrestaShop网站并希望将其与Google AdWords和转换跟踪功能集成。 PrestaShop代码在Smarty 3中。将Google AdWords转换跟踪(javascript)代码添加到PrestaShop/Smarty页面

现在我发现我可以将Google的JS代码放在tpl文件的末尾:order-confirmation.tpl。下面是谷歌代码:

<script type="text/javascript"> 
/* <![CDATA[ */ 
var google_conversion_id = <my id>; 
var google_conversion_language = "en"; 
var google_conversion_format = "3"; 
var google_conversion_color = "ffffff"; 
var google_conversion_label = "<my label>"; 
var google_conversion_value = {$total}; 
/* ]]> */ 
</script> 
<script type="text/javascript" src="http://www.googleadservices.com/pagead/conversion.js"> 
</script> 
<noscript> 
<div style="display:inline;"> 
<img height="1" width="1" style="border-style:none;" alt="" src="http://www.googleadservices.com/pagead/conversion/<id>/?value=0&amp;label=<label>&amp;guid=ON&amp;script=0"/> 
</div> 
</noscript> 

的问题是供给JS变量google_conversion_value与总次序值的内容。

我正在使用Smarty 3,并试图在{literal}标记之间包含整个JS块,或者没有用空格括住大括号,没有空格,似乎任何东西都可以工作。

同样的转换值在该部分中,即googleadservices链接中的一个参数,并且它当前设置为0,但是我希望$ total值也可以转到那里。

回答

1

它看起来像我不得不打电话getOrderTotal$cart对象:

var google_conversion_value = {$cart->getOrderTotal(false, Cart::BOTH_WITHOUT_SHIPPING)}; 

第一个参数是,如果你想获得与税或总量不大。 第二个参数是Cart.php常数:

const ONLY_PRODUCTS = 1; 
const ONLY_DISCOUNTS = 2; 
const BOTH = 3; 
const BOTH_WITHOUT_SHIPPING = 4; 
const ONLY_SHIPPING = 5; 
const ONLY_WRAPPING = 6; 
const ONLY_PRODUCTS_WITHOUT_SHIPPING = 7; 
const ONLY_PHYSICAL_PRODUCTS_WITHOUT_SHIPPING = 8; 
0

恐怕$cart->getOrderTotal()因为为了-confirmation.tpl到达时$cart变量设置为null不会以这种方式工作。我们必须找到另一种方式...

我发现了一种不太聪明的方法,但是到目前为止做的工作。我们必须用id_cart参数调用Cart静态方法getTotalCart。问题是我们没有这个参数的smarty var。我发现的唯一方法是从请求URI中获取它。

因此,首先得到cart_id这种方式(使用regex_replace):

{$cart->getTotalCart($id_cart)|regex_replace:"/[\D]+.*/":""} 

所以完整的代码是:

<script type="text/javascript"> 
    /* <![CDATA[ */ 

    {assign var='id_cart' value={$request_uri|regex_replace:"/.*id_cart=([\d]*).*/":"$1"}} 

    {literal} 
    var google_conversion_id = <my id>; 
    var google_conversion_language = "en"; 
    var google_conversion_format = "3"; 
    var google_conversion_color = "ffffff"; 
    var google_conversion_label = "<my label>"; 
    var google_conversion_value = {/literal}{$cart->getTotalCart($id_cart)|regex_replace:"/[\D]+.*/":""}{literal};{/literal} 
    /* ]]> */ 
</script> 

{assign var='id_cart' value={$request_uri|regex_replace:"/.*id_cart=([\d]*).*/":"$1"}} 

然后用这个参数调用getTotalCart方法

0

它似乎适用于我prestashop v1.5.4

<script type="text/javascript"> 
/* <![CDATA[ */ 
{assign var='id_cart' value={$request_uri|regex_replace:"/.*id_cart=([\d]*).*/":"$1"}} 
{assign var='total_cart' value={$cart->getTotalCart($id_cart)|regex_replace:"/[\D]+.*/":""}} 
{literal} 
var google_conversion_id = YOUR_CONVERSION_ID; 
var google_conversion_language = "en"; // or your language iso 
var google_conversion_format = "3"; // or your format 
var google_conversion_color = "ffffff"; 
var google_conversion_label = "YOUR_CONVERSION_LABEL"; 
var google_conversion_value = {/literal}{$total_cart}{literal};{/literal} 
/* ]]> */ 
</script> 
<script type="text/javascript" src="//www.googleadservices.com/pagead/conversion.js"> 
</script> 
<noscript> 
<div style="display:inline;"> 
<img height="1" width="1" style="border-style:none;" alt="" src="//www.googleadservices.com/pagead/conversion/YOUR_CONVERSION_ID/?value={$total_cart}&amp;label=YOUR_CONVERSION_LABEL&amp;guid=ON&amp;script=0"/> 
</div> 
</noscript> 
相关问题