2017-03-15 14 views
0

YAMLを使ってJekyllのループに必要な正確な字下げとハイフネーションに苦労しています。Jekyllの_dataファイルのYAMLループ構造

コンテキストの場合:私はFancyboxを使用しています.Fancyboxには、サムネイルを開くとスクロールできる隠し画像が含まれています。持ってgallery.ymlと呼ばれる、私は内部の画像を非表示になっている建物だが、一部はやる、そしてそれはとても基本的に、私は/_dataにページを構築しようとしている各

に挿入されたHTMLのブロックを必要とギャラリーにないすべての画像Fancybox HTML(これは、/_include内のページにあります)にループが挿入されるために、その中に必要なすべてのアイテム(サムネイルURL、タイトルなど)。

私のケースでは、YAMLをどのように構造化するかについて明確な答えが見つかりません。私はマッピング値と構文解析エラーを取得し続けます。

gallery.yml:私はできるだけ多くの構造を簡素化しようとするでしょう

#gallery 
- name: Saturn 
    category: Planets 
    thumb_url: saturn-thumb.jpg 
    main_url: saturn.jpg 

- name: Neptune 
    category: Planets 
    thumb_url: neptune-thumb.jpg 
    main_url: neptune.jpg 
    - set_two: 
     category: Planets 
     main_url: neptune-2.jpg 
    - set_three: 
     category: Planets 
     main_url: neptune-3.jpg 

- name: Mars 
    category: Planets 
    thumb_url: mars-thumb.jpg 
    main_url: mars.jpg 

/_includes(できるだけ簡素化として、私はちょうどそれをしたい、のは、これは正しいFancybox HTMLを持っているふりをしましょう)内部のページ:

{% for gallery in site.data.gallery %} 

// Main Fancybox 
<p>{{ gallery.name }} - {{ gallery.category }}</p> 
<img src="{{ gallery.thumb_url }}" /><img src="{{ gallery.main_url }}" /> 

    {% for ??? in ??? %} // This is where the hidden Fancybox data would be, if it exists 
     <p>{{ gallery.main_url }} - {{ gallery.category }}</p> 
    {% endfor %} 

{% endfor %} 

YAMLでこれらのグループを作成するためのインデント規則は何ですか?そして、それらがループの中に存在する場合、どのように呼び出すのですか?

これは、今何をするかです:

<HTML for Fancybox structure for Saturn> 
    <img main image /> 
    <img thumbnail /> 
</HTML for Fancybox structure> 

<HTML for Fancybox structure for Neptune> 
    <img main image /> 
    <img thumbnail /> 
</HTML for Fancybox structure> 

繰り返しギャラリーが完了するまで。

しかし、所望の出力は次のようになります。場合/特定のギャラリーアイテムが内にネスト複数Fancyboxイメージを持っているとき、私はYAMLファイルでそれらをリストとして、ジキルコードは、それらを挿入します。

そう...

<HTML for Fancybox structure for Saturn> 
    <img main image /> 
    <img thumbnail /> 
</HTML for Fancybox structure> 

<HTML for Fancybox structure for Neptune - which has additional elements> 
    <img main image /> 
    <img thumbnail /> 
     <img main image 2 /> 
     <img main image 3 /> 
</HTML for Fancybox structure> 

私はそれが理にかなって願っています。私はちょうどそのループのすべてのインスタンスがネストされたデータを持っていないときに、ネストされたループのJekyll構文を理解しようとしています。

+0

所望の出力が何でありますか? – marcanuy

+0

YAMLにはネストされたループはありませんので、YAMLの構文を理解するのに時間がかかることがあります。あなたが探しているのは、Yeklの使用によって制約されるJekyllの構文です。 UTF-8の使用にも制約がありますが、UTF-8で入れ子になったループを理解しようとは思わないでください;-) – Anthon

答えて

1

言って、これはfancyboxのために私のデータです:

# gallery.yml 

- name: Saturn 
    category: Planets 
    thumb_url: saturn-thumb.jpg 
    main_url: saturn.jpg 

- name: Neptune 
    category: Planets 
    thumb_url: neptune-thumb.jpg 
    main_url: neptune.jpg 
    additionals: 
    - 
     category: Planets 
     main_url: neptune-2.jpg 
    - 
     category: Planets 
     main_url: neptune-3.jpg 

- name: Mars 
    category: Planets 
    thumb_url: mars-thumb.jpg 
    main_url: mars.jpg 

、テンプレートは次のようになります。

{% for gallery in site.data.gallery %} 

<!-- Main Fancybox --> 
    <p>{{ gallery.name }} - {{ gallery.category }}</p> 
    <img src="{{ gallery.thumb_url }}" /><img src="{{ gallery.main_url }}" /> 

    {% if gallery.additionals %} 
    <!-- Secondary optional Fancybox --> 
    {% for item in gallery.additionals %} 
     <p>{{ item.main_url }} - {{ item.category }}</p> 
    {% endfor %} 
    {% endif %} 

{% endfor%} 
+0

ありがとうございました。これは何らかの理由で私のために働いていません。私はエラーは出ませんが、問題はここにあると思います:{site.data.gallery.additionals%のアイテムの%} - "アイテム"のキーワードか、YAMLのアイテムが必要ですか"item"と書かれたファイル? – bunnycode

+1

ああ! site.dataを削除します。仕事 - {gallery.additionals%のアイテムの%} - ありがとうございました! – bunnycode

+0

エラーを指摘してくれてありがとう。私は将来の読者のための答えを更新します。 – ashmaroli

関連する問題