Jekyll 如何在液体中对集合进行分组?

Jekyll 如何在液体中对集合进行分组?,jekyll,liquid,Jekyll,Liquid,我有一个Jekyll应用程序(使用Liquid),我想知道如何在Liquid中将一组项目组合成一小部分集合 例如,假设我有这个数组: fruits = ['apples', 'oranges', 'bananas', 'pears', 'grapes'] 在液体页面中,我真正想做的是: fruit_groups = [['apples', 'oranges'], ['bananas', 'pears'], ['grapes', null]] 例如,RubyonRails可以通过附加到枚举表的

我有一个Jekyll应用程序(使用Liquid),我想知道如何在Liquid中将一组项目组合成一小部分集合

例如,假设我有这个数组:

fruits = ['apples', 'oranges', 'bananas', 'pears', 'grapes']
在液体页面中,我真正想做的是:

fruit_groups = [['apples', 'oranges'], ['bananas', 'pears'], ['grapes', null]]
例如,RubyonRails可以通过附加到枚举表的
.group\u方法来实现这一点

我能用液体做这个吗

用例:我有一个很大的项目集合,但我需要将它们转换为
元素的列。所以,如果我有三列,我需要得到三个子集合


谢谢

这并不能直接回答您的问题,但我不确定您是否愿意做您描述的事情(我很确定您不能)——Liquid是一个模板系统,而不是一种成熟的编程语言。我怀疑您可以使用for循环和cycle的一些功能来实现最终目标:

例如:

    {水果中的水果%} {%capture pattern%}{%cycle'奇数类','偶数类'%}{%endcapture%}
  • {{{fruit}
  • {%endfor%}

    {水果中的水果%} {%capture pattern%}{%cycle'奇数','偶数'}{%endcapture%} {%if pattern=='奇数'%}
  • {{水果}
  • {%endif%} {%endfor%}
    {%用于水果中的项目%} {%capture pattern%}{%cycle'奇数','偶数'}{%endcapture%} {%if pattern=='偶数'%}
  • {{水果}
  • {%endif%} {%endfor%}
如果有三列,那么循环中只有三个步骤,If语句中有三个方向

如果所有这些都失败了,你可以编写一个插件(用Ruby),在数据到达模板层之前对其进行重新构造,但我怀疑这可能会有点过分

<ul>
{% for fruit in fruits %}
    {% capture pattern %}{% cycle 'odd_class', 'even_class' %}{% endcapture %}
        <li class={{ pattern }}>{{ fruit }}</li>
{% endfor %}
</ul>
<ul class="odd">
{% for fruit in fruits %}
    {% capture pattern %}{% cycle 'odd', 'even' %}{% endcapture %}
    {% if pattern == 'odd' %}
        <li>{{ fruit }}</li>
    {% endif%}
{% endfor %}
</ul>

<ul class="even">
{% for item in fruits %}
    {% capture pattern %}{% cycle 'odd', 'even' %}{% endcapture %}
    {% if pattern == 'even' %}
        <li>{{ fruit }}</li>
    {% endif%}
{% endfor %}
</ul>