1

我正在运行一个 PrestaShop 网站,并希望将其与 Google AdWords 和转化跟踪功能集成。PrestaShop 代码在 Smarty 3 中。

现在我发现我可以将 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 值也可以去那里。

4

3 回答 3

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;
于 2012-08-30T10:55:56.027 回答
0

恐怕$cart->getOrderTotal()不能这样工作,因为$cart到达 order-confirmation.tpl 时变量设置为 null。我们必须另寻出路……

我找到了一种不是很聪明的方法,但到目前为止就完成了这项工作。我们必须使用 id_cart 参数调用 Cart 静态方法 getTotalCart。问题是我们没有任何带有此参数的 smarty var。我发现的唯一方法是从请求 URI 中获取它。

因此,首先,以这种方式获取 cart_id(使用 regex_replace):

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

然后使用此参数调用 getTotalCart 方法:

{$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> 
于 2013-05-13T14:11:40.027 回答
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>
于 2013-07-30T06:29:08.137 回答