- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在 Prestashop 上的订单确认页面中添加 GTM 的数据层。就像 Smarty 文档中的精确一样,我使用 {literal}
, {ldelim}
和{rdelim}
.
我的脚本需要是动态的,以便将正确的数据发送到 GTM,具体取决于客户端刚刚传递的命令。
我修改了 header.tpl 文件,因为我需要将 JS 放在 GTM 标记之前。
这是我的代码:
{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 显示正常,但当然在 a 之外
<script>...</script>
...
感谢您的帮助,
珀塞瓦尔
最佳答案
我会为你做一些小修正:
{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}
将 smarty 代码与 js 结合起来总是很棘手,在你的情况下,我不建议使用 {literal}
标签,请尝试让我知道;)
关于javascript - GTM、Prestashop 和 Smarty {字面意思},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41748659/
我有一个多维关联数组,我将其传递给 smarty 模板。我在我的 smarty 模板中使用下面的代码在我的浏览器中生成显示的两个表。 聪明的代码: {foreach from=$allarr key
如何打印聪明的变量的前n个字符,例如{$ var}的前30个字符? 最佳答案 您应该使用truncate修饰符: {$var|truncate:30} 更多信息here。 关于smarty - Sma
我有这个聪明的代码: {iterate from=fruits item=fruit} .... {/iterate} 我想在这个循环内有一个计数器,它接受一个起始值并增加一直到循环继续。 我应该用
我想自动转义所有模板变量,也就是我想转义它们而不必写|escape每时每刻。因此我启用了 $escape_html选项。 然而,显然 Smarty 处理使用 {capture} 创建的变量。以同样的方
我想在不使用循环的情况下获取 smarty 模板中数组的最后一个元素 assign("arr",$arr); 最佳答案 有一种简单的方法可以使用 variable modifier 在您的 Smart
我正在尝试向我的模板添加一些 smarty 到我想要提供的第一个元素 以及下一个元素 我尝试做这样的事情: {foreach $imageCollection as $image key=s
现在,我的日期显示如下: 19\06\2013 我想要的是这个: 19\6\2013 我目前的 smarty 代码是: {$variable|date_format:"%e\%m\%Y"} 我尝试使
我已经为 smarty 模板创建了一个文件夹结构 f .f1 ..template1.tpl ..test.tpl template1.tpl the template_dir path is poi
我正在尝试向我的模板添加一些 smarty 到我想要提供的第一个元素 以及下一个元素 我尝试做这样的事情: {foreach $imageCollection as $image key=s
我有一个“links.tpl”文件,其中包含具有许多变量的行,如下所示 {assign var=link_main value="index.php"} {assign var=link_log
如何使用Smarty获取URL,类似于JavaScript中的window.location? 我做到了 {$smarty.server.PHP_SELF} 但它不起作用。 最佳答案 你也可以使用这个
我将 Smarty 用于服务器端模板,我想将 Handlebars.js 用于客户端模板,但 Smarty 原因是错误,因为 Handlebars 使用与 Smarty 相同的大括号。 我可以在 Sm
我是 Smarty 的新手。我想对 smarty 中的数组元素进行 mod 操作。以下是我试图实现的代码片段: {if {$que_seq_no}.{$sub_ques_no+1} % 10 == 1
我正在尝试在表单中添加新的谷歌分析事件。所以我有这样的事情: Button 1 到目前为止,一切都很好。但我得到了这个奇怪的聪明错误: Fatal error: Uncaught e
我想用 smarty 编码一个 url。 $var 包含我的数据网址 最佳答案 与 escape modifier您可以设置可选的escape_type 'url' 以返回rawurlencode
哪种将我网站的模板化部分组合在一起的方法是最佳做法?我更喜欢第一种解决方案,但我不确定使用多次调用 display() 是一种好的做法。我正在寻找易于维护和速度。 display('header.tp
我们在所有前端模板中大量使用 Smarty。我观察到以下情况: 当我的Smarty模板类似如下: {if $a == 'A'} {$var1} {else}
在某些项目中,我必须使用 Perl 和 Template Toolkit在其他使用 PHP 和 Smarty模板。您能否以某种方式将两者配置为具有每种语言的公共(public)子集,以便您可以在 sm
如果它为空需要另一个结果,我有聪明的值(value) {get_video_meta video_id=$video_data.id key='test'} 这个值打印“测试”如果这个值是空的否则我该
PHP Smarty 的修改器插件可以访问 Smarty 对象吗? block 和 function 插件类型都将当前的 Smarty 对象作为参数。即 function smarty_functio
我是一名优秀的程序员,十分优秀!