Shopify - 使用带有2个条件的液体脚本对数组进行排序

时间:2014-09-03 19:26:49

标签: sorting shopify liquid

这个问题非常接近Shopify Sort cart.items array using Liquid script

我有未分类的会话,我想按日期和时间排序(预期结果:1,2,3,4)。

{  
    "date"=>"2014-06-24", 
    "time"=>"09:00", 
    "name"=>"Session 2",
}
{  
    "date"=>"2014-06-25", 
    "time"=>"08:45", 
    "name"=>"Session 3",
}
{  
    "date"=>"2014-06-24", 
    "time"=>"08:00", 
    "name"=>"Session 1",
}
{  
    "date"=>"2014-06-25", 
    "time"=>"09:45", 
    "name"=>"Session 4",
}

以下是代码:

{% assign time_sorted_instances = instances | sort: "time" %}
{% assign day_sorted_instances = time_sorted_instances | sort: "date" %}
{% for instance in instances %}
  {{ instance.date | date: "%A, %B %e, %Y" }} {{ instance.time }} {{ instance.session.name }}             <br>
{% endfor %}
{% for instance in time_sorted_instances %}
  {{ instance.date | date: "%A, %B %e, %Y" }} {{ instance.time }} {{ instance.session.name }}             <br>
{% endfor %}
{% for instance in day_sorted_instances %}
  {{ instance.date | date: "%A, %B %e, %Y" }} {{ instance.time }} {{ instance.session.name }}             <br>
{% endfor %}

我能够按日期(2,1,3,4)或按时间(1,3,2,4)排序实例,但不能一个接一个地排序(1,2,3, 4)。 ruby中的匹配函数是:

sorted_instances = instances.sort {| i | [i.date,i.time]}

以下是Liquid中排序选项的代码:https://github.com/Shopify/liquid/blob/master/lib/liquid/standardfilters.rb#L112-L123

显然这是不可能的。如果有人有工作,请告诉我!

1 个答案:

答案 0 :(得分:2)

如果使用Javascript是一个选项,那么这可能是一个答案https://github.com/Shopify/liquid/issues/143#issuecomment-8718129

但我还没有发现任何Liquid只能回答......