我很难使用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语法,而不是每个循环的实例都有嵌套数据。
答案 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%}