在shopify中使用带有属性的数学过滤器,可以使用硬编码值来正常工作

时间:2016-07-23 05:35:55

标签: shopify shopping-cart liquid

我已经计算了循环之前的总订单价格,通过在输出中打印来验证该值。下面提到的是相同的代码块:

{% assign total_items_price = 0 %}
    {% for line_item in line_items %}
        {%assign total_items_price = total_items_price | plus:line_item.price %}
    {% endfor %}

以下是我为进一步计算而实施的方案:

  1. 尝试将每个商品的价格除以total_items_price,但输出为0.即使我将其转换为货币格式,结果仍然相同:

    {{ line_item.price | divided_by:total_items_price }} 
    {{ line_item.price | divided_by:total_items_price | money }} 
    
    1. 我也使用了多个数学过滤器但结果是0:

      {{line_item.price | divide_by:total_items_price |时间:discounts_amount}}    {{line_item.price | divide_by:total_items_price |次:discounts_amount |钱}}

  2. 变量/属性的值(line_item.price,total_items_price,discounts_amount)在通过UI打印验证的for循环内可用。如果我使用一些硬编码值而不是属性/变量,它会给出正确的输出。例如:

        {{ line_item.price | divided_by:5 }} //gives the correct output
    

2 个答案:

答案 0 :(得分:0)

也许您可以使用forloop.length值。由于循环中没有任何条件语句,因此不需要手动索引。

HTH

答案 1 :(得分:0)

您应该尝试在line_item.price上使用数学过滤器。

{% assign total_items_price = 0 %}
{% for line_item in line_items %} 
   {% assign total_items_price = total_items_price | plus: line_item.price %} 
   {{ line_item.price | times: 1.0 | divided_by: total_items_price }} 
{% endfor %}

注意"次:1.0"在第4行的line_item.price之后应用过滤器。