2

Jekyllアプリ(Liquidを使用)を持っていますが、Liquidで、アイテムのコレクションをコレクションの小さなサブセットにグループ化する方法を知りたいです。

たとえば、私がこの配列を持っているふりをします。

fruits = ['apples', 'oranges', 'bananas', 'pears', 'grapes']

Liquidページで私が本当にやりたいことはこれを取得することです:

fruit_groups = [['apples', 'oranges'], ['bananas', 'pears'], ['grapes', null]]

たとえば、Ruby on Railsは、.group_by列挙型にアタッチされたメソッドを使用してこれを行うことができます。

これをLiquidで実行できますか?

ユースケース:アイテムのコレクションがたくさんありますが、それらを<ul>要素の列に変換する必要があります。したがって、3つの列がある場合、3つのサブコレクションを取得する必要があります。

ありがとう!

4

1 に答える 1

2

これはあなたの質問に直接答えることはありませんが、あなたがあなたが説明していることをやりたいかどうかはわかりません(そして私はあなたができないと確信しています)-Liquidはテンプレートシステムであり、本格的ではありませんプログラミング言語。forループとサイクル機能のいくつかを使用して最終目標を達成できると思います:http ://code.google.com/p/liquid-markup/wiki/UsingLiquidTemplates

例えば:

<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>

3つの列がある場合、サイクルには3つのステップがあり、ifステートメントには3つの方向があります。

それがすべて失敗した場合は、データがテンプレートレイヤーに到達する前にデータを再構築するプラグインを(Rubyで)作成できますが、それはやり過ぎだと思います。

于 2012-11-01T19:37:42.320 に答える