如果那么YAML循环结构在_data文件中为Jekyll

时间:2017-03-15 17:59:17

标签: loops jekyll liquid

我很难使用YAML在Jekyll中进行循环所需的精确缩进和连字。

对于上下文:我使用的是Fancybox,它可以包含一些弹出缩略图后可以滚动的隐藏图像。并非我所在的图库中的所有图像都包含隐藏的图像,但有些图像存在,并且需要在每个图像中插入一块HTML

所以基本上我试图在名为/_data的{​​{1}}中构建一个页面,其中包含所有必需的项目(缩略图网址,标题等),以便循环播放插入Fancybox HTML(位于gallery.yml s内的页面中)。

在我的案例中,我无法找到确切如何构建YAML的确切答案。我一直在获取映射值和解析错误。我会尝试尽可能地简化结构:

/_include

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 内的页面(让我们假设这有适当的Fancybox HTML,我只想尽可能地简化它):

/_includes

在YAML中创建这些分组的缩进规则是什么?如何在循环内调用它们?

这就是它现在所做的:

{% 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 %}

重复直到画廊完成。

但是所需的输出是:如果/当特定图库项目嵌套在中的多个Fancybox图像时,Jekyll代码将插入它们,因为我将它们列在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>

我希望这是有道理的。我只是试图找出嵌套循环的Jekyll语法,而不是每个循环的实例都有嵌套数据。

1 个答案:

答案 0 :(得分: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%}