问题描述
Smarty 3.1.33 给JS分配字符串变量时,单引号'转为实体'
我的代码:
{$newOrder = $newOrder|cat :"[{ldelim}\r\n'transactionId':'$orderID'\r\n"|cat: "'transactionAffiliation': 'site.com',\r\n"|cat: "'transactionTotal': '$totalPrice',\r\n"|cat :"'transactionProducts': $orderProducts\r\n {rdelim}]"}
<script>dataLayer = {$newOrder|escape:'html':'UTF-8'};</script>
获取:
<script>dataLayer = [{
'transactionId':'7214'
'transactionAffiliation': 'site.com','transactionTotal': '608 грн.','transactionProducts': [{
'sku':'17962','name':'Детские ходунки M 0591-S микс 4 цвета','category':'Ходунки','price':445,'quantity':1
}],[{
'sku':'28963','name':'Планшет обучающий SK 0019','category':'Говорящие азбуки','price':163,'quantity':1
}]
}];
</script>
需要(没有“' ;”):
<script>dataLayer = [{
'transactionId': '1234','transactionAffiliation': 'site.com','transactionTotal': 11.99,'transactionProducts': [{
'sku': 'DD44','name': 'T-Shirt','category': 'Apparel','price': 11.99,'quantity': 1
}]
}];
</script>
解决方法
由于 prestashop 在 1.7+ 版本中改变了转义方式,这引起了很多头痛。
您可以尝试删除这样的自动过滤器{$newOrder nofilter}