如何在jekyll中抽象出一个简单的包含?

时间:2014-09-18 09:25:41

标签: jekyll

我有一个jekyll网站,我需要在某些页面上有一个画廊。

现在,对于每个页面,我在_data文件夹中有一个包含图像路径列表的相应文件。然后,我使用以下代码在每个页面上构建galklery:

{% for x in site.data.one %}
<img src="{{ x.img }}">
{% endfor %}

这仅适用于名为&#34; one&#34;的页面。

对于名为&#34; 2&#34;的页面,我将有类似的代码:

{% for x in site.data.two %}
<img src="{{ x.img }}">
{% endfor %}

我想知道,是否可以将其抽象到_includes文件夹中的文件中?所以我可以打电话

{% include gallery.html %}

在任何页面?然后代码检测从哪个页面调用,并按上述方式更改它?

希望我很清楚。

1 个答案:

答案 0 :(得分:1)

在_data / galleries.yml

1:
  - thumb: thumb1-1/src.jpg
    medium: medium1-1/src.jpg
  - thumb: thumb1-2/src.jpg
    medium: medium1-2/src.jpg

2:
  - thumb: thumb10-1/src.jpg
    medium: medium10-1/src.jpg
  - thumb: thumb10-2/src.jpg
    medium: medium10-2/src.jpg

在包含图库的页面中:

---
layout: default
title: Page title
gallery_data_id: 1  << id of gallery datas for this page
---

<h1>Article 1</h1>

{% include gallery.html %}

在_includes / gallery.html

{% if site.data.links[page.gallery_data_id] %}  << NO DATA = print nothing
    <ul>
    {% for img in site.data.galleries[page.gallery_data_id] %}
        <li>
        <!-- do what you want with your datas here -->
        thumb = {{img['thumb']}} - img = {{img['medium']}}
        </li>
    {% endfor %}
    </ul>
{% endif %}