【问题标题】:Shopify Sort cart.items array using Liquid scriptShopify 使用 Liquid 脚本对 cart.items 数组进行排序
【发布时间】:2013-08-23 00:17:58
【问题描述】:

我想对 cart.liquid 文件中的 cart.items 数组进行排序。然后我可以按预期的顺序在表格中显示时间。

    {% for item in cart.items sort_by:item.line_price %}
    <div class="row">
      <div class="span12">
      <h1>Your cart</h1>
      <form action="/cart" method="post" id="cartform">
        <table>
        </table>
      </form>
      </div>
    </div>
    {% endfor %}

但是代码不起作用,因为我不能在for 语句中使用sort_by:item.line_price

如何使用内置功能对数组进行排序?

另一个问题是 Shopify Liquid 不支持创建数组。如果我使用自己的算法对数组进行排序。但是如何将输出保存到新数组中?

非常感谢。

【问题讨论】:

    标签: shopify liquid liquid-layout


    【解决方案1】:

    Shopify 有一个 sort filter 表示“哈希或删除数组”。你可以这样使用它:

    {% assign cart_items = cart.items | sort: "line_price" %}
    {% for item in cart_items %}
    - {{item.title}} {{item.line_price}}<br/>
    {% endfor %}
    

    【讨论】:

    • 我可以使用自定义字段,如“item.properties['tags'] contains '[Hardware]'”吗?
    • 不,我不这么认为,通过阅读code可能也可以在 Shopify 内部使用,看来这种语法不受支持。
    • 此外,项目 (line_items) 没有字段 properties。产品标签仅适用于产品 (item.product.tags)。
    • item 确实有一个属性字段。我可以访问item.properties['tags']。我已通过使用带分隔符的字符串来存储 cart.items 的索引来解决此问题。它非常丑陋,但它有效。
    【解决方案2】:

    您可以将数据呈现为 Javascript 数据结构,然后对其进行排序。在 Javascript 中使用模板。 Handlebars.js 可以很好地解决这个问题。没有内置排序。

    【讨论】:

    • 好主意,我之前考虑过,它适用于 cart.liquid 页面。但它不适用于“新订单通知”,因为电子邮件模板不支持 JavaScript。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-05
    • 2017-06-14
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多