Если тогда структура цикла YAML в файле _data для 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 (давайте представим, что это правильный HTML Fancybox, я просто хочу сделать его как можно более простым):

{% 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>

Повторяйте, пока галерея не будет готова.

Но желаемый результат таков: если/когда определенный элемент галереи имеет несколько вложенных изображений Fancybox, код Jekyll вставит их, как я перечислил их в файле YAML.

So...

<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 для вложенных циклов, когда не каждый экземпляр этих циклов имеет вложенные данные.


person bunnycode    schedule 15.03.2017    source источник
comment
каков желаемый результат?   -  person marcanuy    schedule 15.03.2017
comment
В YAML нет вложенных циклов, поэтому на выяснение синтаксиса YAML для них может уйти много времени. То, что вы ищете, это синтаксис Jekyll, который просто ограничен использованием YAML. Это также ограничено использованием UTF-8, но вы, надеюсь, не будете пытаться выяснить вложенные циклы в UTF-8 ;-)   -  person Anthon    schedule 16.03.2017


Ответы (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%}
person ashmaroli    schedule 15.03.2017
comment
Спасибо за вашу помощь. У меня это почему-то не работает. Я не получаю никаких ошибок, но я думаю, что проблема может быть здесь: {% для элемента в site.data.gallery.additionals %} - является ли элемент ключевым словом, или я должен иметь элемент в файле YAML с меткой вещь? - person bunnycode; 15.03.2017
comment
Ах! удаление site.data. сработало - {% для элемента в галерее.дополнения %} - Большое спасибо за помощь! - person bunnycode; 16.03.2017
comment
Спасибо, что указали на ошибку. Я обновлю ответ для будущих читателей. - person ashmaroli; 16.03.2017