如果 Jekyll 的 _data 文件中有 YAML 循环结构

If then YAML loop structure in _data file for Jekyll

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

对于上下文:我正在使用 Fancybox,它可以包含隐藏的图像,您可以在弹出缩略图后滚动浏览这些图像。并非我正在构建的画廊中的所有图像都在内部隐藏了图像,但有些确实如此,这需要在每个

中插入一块 HTML

所以基本上我正在尝试在 /_data 中构建一个名为 gallery.yml 的页面,其中包含所有必要的项目(缩略图 URL、标题等)用于循环插入 Fancybox HTML(在 /_includes 内的页面中)。

对于我的情况下如何构建 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>

重复直到画廊完成。

但所需的输出是:if/when 一个特定的画廊项目有 多个 Fancybox 图像嵌套在里面 ,Jekyll 代码将插入它们,因为我在 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 语法,但并非该循环的每个实例都有嵌套数据。

说,这是我的 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%}