如果 Jekyll 的 _data 文件中有 YAML 循环结构
If then YAML loop structure in _data file for Jekyll
我很难在 Jekyll 中使用 YAML 进行循环所需的精确缩进和连字。
对于上下文:我正在使用 Fancybox,它可以包含隐藏的图像,您可以在弹出缩略图后滚动浏览这些图像。并非我正在构建的画廊中的所有图像都在内部隐藏了图像,但有些确实如此,这需要在每个
中插入一块 HTML
所以基本上我正在尝试在 /_data
中构建一个名为 gallery.yml
的页面,其中包含所有必要的项目(缩略图 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>
重复直到画廊完成。
但所需的输出是: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%}
我很难在 Jekyll 中使用 YAML 进行循环所需的精确缩进和连字。
对于上下文:我正在使用 Fancybox,它可以包含隐藏的图像,您可以在弹出缩略图后滚动浏览这些图像。并非我正在构建的画廊中的所有图像都在内部隐藏了图像,但有些确实如此,这需要在每个
中插入一块 HTML所以基本上我正在尝试在 /_data
中构建一个名为 gallery.yml
的页面,其中包含所有必要的项目(缩略图 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>
重复直到画廊完成。
但所需的输出是: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%}