将Google AdWords转换跟踪(javascript)代码添加到PrestaShop/Smarty页面中
Add Google AdWords Conversion Tracking (javascript) code into a PrestaShop / Smarty page
我正在运行一个PrestaShop网站,希望将其与Google AdWords和转换跟踪功能集成。PrestaShop代码在Smarty 3中。
现在我发现我可以把谷歌的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&label=<label>&guid=ON&script=0"/>
</div>
</noscript>
问题是向JS变量google_conversion_value
提供总订单值的内容。
我使用的是Smarty 3,我试图在{literal}标记之间包含整个JS块,或者不使用空格,只在大括号周围加空格,没有空格,任何东西似乎都可以。
同样的转换值也在部分中,这是googleadservices链接中的一个参数,目前它被设置为0,但我希望$total值也在那里。
看起来我不得不在$cart
对象上调用getOrderTotal
:
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;
恐怕$cart->getOrderTotal()
不能以这种方式工作,因为$cart
变量在到达order-confirmation.tpl时被设置为null。我们必须找到另一种方法。。。
我找到了一种不太聪明的方法,但到目前为止,它能胜任这项工作。我们必须使用id_Cart参数调用Cart静态方法getTotalCart。问题是,我们没有任何带有此参数的smarty var。我找到的唯一方法是从请求URI中获取它。
因此,首先,通过这种方式(使用regex_replace)获取cart_id:
{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>
它似乎在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}&label=YOUR_CONVERSION_LABEL&guid=ON&script=0"/>
</div>
</noscript>
相关文章:
- 如何将smarty变量与javascript变量进行比较
- jQuery在smarty代码上抛出未捕获的错误
- 在Smarty中定义AJAX返回的格式
- 将Google AdWords转换跟踪(javascript)代码添加到PrestaShop/Smarty页面中
- 使用Smarty将值从PHP传递到JS
- 如何通过json将products对象中的对象值从php传递给smarty
- 在prestashop的产品页面上没有完全应用Javascript
- 从ajax调用Smarty-php函数
- PrestaShop MultiShops类名称更改
- 如何创建Prestashop自定义页面以及如何在url中调用该页面
- Prestashop,在.tpl中,如何在<脚本内容
- 通过jquery提交(smarty)
- 将数据从弹出窗口返回到父窗口(SMARTY)
- Smarty-可以't将变量内容插入javascript
- smarty和谷歌地图
- 使用标记<脚本>在Smarty模板中使用if
- prestashop上的Instafeed JS无法正常工作
- PrestaShop:使用smarty添加javascript数组元素
- 在 Prestashop 1.6 中从 Smarty 分配 JavaScript var
- Prestashop Smarty 电子邮件正则表达式验证