开发者问题收集

Shopify {{product.price|money_without_trailing_zeros}}

2021-02-14
8620

我是 Shopify 新手。

我正在尝试构建一个可以在 addtocart 事件中引用产品价格的数据层。 但是,liquid 对象 product.price 返回一个没有小数的字符串。例如 3499,其中价格为 34.99

我正在使用 {{ product.price | money_without_trailing_zeros}> ,但它返回一个空字符串。

我也尝试过使用从 product-template.liquid 中获取的 {{ current_variant.price | money }> ,但它也没有返回任何内容。

这是我的尝试:

<!-- jQuery -->
<script type="textjavascript" src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<!-- Script -->
<script type="text/javascript">
  function fireEvent() {
    var price= {{ product.price | money_without_trailing_zeros}}
    console.log( price)
    // Wait a second for button to initiate.
    setTimeout(function() {      
      // Get div id.
  
  function sendEvent(){
  dataLayer.push({
  'event': 'addToCart',
  'ecommerce': {
    'currencyCode': 'EUR',
    'add': {                                // 'add' actionFieldObject measures.
      'products': [{                        //  adding a product to a shopping cart.
        'name': '{{ product.title }}',
        'id': '{{ product.id }}',
        'price': price ,
        'quantity': 1
       }]
    }
  }
});
  
  
  }  
  
document.getElementById("AddToCart").addEventListener("click", sendEvent)



}, 3000);
  }
  
  fireEvent();
</script>

有什么帮助吗?

1个回答

var price= {{ product.price | money_without_trailing_zeros}}}

更改为

var price= "{{ product.price | money_without_trailing_zeros}}"

(请注意,liquid 代码周围的引号)


或更改为

var price= {{ product.price | money_without_trailing_zeros | json }}}>

(请注意, | money_without_trailing_zeros 过滤器之后的 | json 过滤器)


您的代码可能会输出类似这样的内容 - var price = $34.99 ,这会因为美元符号(或您商店中配置的任何其他货币符号/代码)而导致 JS 出现错误。

Vladimir
2021-02-14