2017-08-15 12 views
0

データファイルから特定の順序でアイテムを出力するにはどうすればよいですか?ジキルデータマニュアル出力順


のは、私のデータファイルはこのようになっていることを言ってみましょう:本当にそこに十分な取り払わをかけることなく、

[{ 
    "name": "Tim" 
}, { 
    "name": "Paul" 
}, { 
    "name": "Brian" 
}, { 
    "name": "James" 
}, { 
    "name": "Mark" 
}] 

、私は次のように書いた:

{% for item in site.data.example %} 

    {% if 
    item.name == "Mark" or 
    item.name == "Brian" or 
    item.name == "James" 
    %} 
    <div> 
    {{ item.name }} 
    </div> 
    {% endif %} 

{% endfor %} 

...これは明らかになります出力:

<div>Brian</div> 
<div>James</div> 
<div>Mark</div> 

私は、データファイルの順序を変更する以外の特定の順序を、強制的に方法を考え出すことができませんでしたが、それは実行可能な選択肢ではありません

<div>Mark</div> 
<div>Brian</div> 
<div>James</div> 

:私は可能にするために望んでいた..when私。

+0

P.S.私は一般的にデータファイルを扱う経験はあまりありません。 – Joonas

+0

これはjsonデータファイルですか? – marcanuy

+0

@marcanuy、そうです。 – Joonas

答えて

1

目的の順序でインデックスを作成します。別のデータファイル内に配置することも、Liquidアレイとして直接配置することもできます。

、インデックス内の項目ごとに、それをmatchsいずれかを択一データファイルの処理を横断:

{% assign listorder = "Mark,Brian,James" |split: ","%} 
{% for order in listorder %} 
{% for data in site.data.mydata %} 
{% if data['name']==order%} 
{{data['name']}}, 
{% endif %} 
{% endfor%} 

{% endfor %} 

出力:

Mark, Brian, James, 

データファイル

順序を有すること

作成_data/order.yml

- Mark 
- Brian 
- James 

コードでは、次のコードを使用します。{% for order in site.data.order %}

+0

ありがとうございます。あなたが私に尋ねるのを気にしないでください...これをカスタム関数(または何か)にする方法があるので、別のページの複数の場所で使うことができます。 'getInfo(" Mark、Brian、James ")'と 'getInfo(" Brian、Paul、Tim ")と同様です。私はこの正確なフォーマットを使用することを主張しているわけではなく、ちょうど意味をなさない方法でこのコードを繰り返す方法を調べる必要があります。 – Joonas

+0

ベストオプションは、複数のデータファイルをオーダーで作成することです。質問を更新しました。 – marcanuy

+0

悲しいことに、これはオプションではありません。私たちは50MBのjsonファイルについて話しています。手動で編集することはできません。また、選択した各データのバッチは任意の順序である必要があります。 – Joonas

関連する問題