2014-09-18 4 views
0

У меня есть сайт jekyll, и мне нужно иметь галерею на определенных страницах.Как абстрагироваться от простого включить в jekyll?

прямо сейчас, для каждой страницы у меня есть соответствующий файл в папке _data, содержащей список путей изображения. то, я построить galklery на каждой странице с помощью следующего кода:

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

это только для страницы под названием «один».

на странице под названием «два», я буду иметь подобный код:

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

т.д.

мне было интересно, можно абстрагировать это прочь в файл в папке _includes? поэтому я могу просто позвонить

{% include gallery.html %} 

на любой странице? а затем код определяет, на какой странице он вызван, и соответствующим образом изменит его, как указано выше?

надеюсь я ясный.

ответ

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 %} 
+0

спасибо, что работал – user973612

Смежные вопросы