2017-03-15 53 views
0

我很難用Jeamll中使用YAML循環所需的精確縮進和連字符。如果在_data文件中的YAML循環結構爲Jekyll

對於上下文:我正在使用Fancybox,它可以包含隱藏圖像,一旦彈出打開縮略圖,就可以滾動該隱藏圖像。在我建立了藏在裏面的圖像畫廊並不是所有的圖像,但也有一些,這需要插入到每個

所以基本上我試圖打造出一個/_data頁面調用gallery.yml有HTML塊所有必需的項目(縮略圖URL,標題等),以便插入到Fancybox HTML(它位於/_include s內的頁面)中。

我找不到確切的答案,以確切地說明如何構建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語法。你正在尋找的是Jekyll語法,它恰好受到YAML使用的限制。它也受到使用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

感謝您的幫助。由於某種原因,這不適合我。我沒有收到任何錯誤,但我認爲問題可能在這裏:{%for site.data.gallery.additionals%} - 是「item」一個關鍵字,還是必須在YAML中有一個項目標有「項目」的文件? – bunnycode

+1

啊!刪除site.data。工作 - {%爲gallery.additionals%中的項目} - 非常感謝您的幫助! – bunnycode

+0

感謝您指出錯誤。我會爲未來的讀者更新答案。 – ashmaroli