Вложенный цикл жидкости в Jekyll не выполняет итерацию нескольких подпунктов - PullRequest
0 голосов
/ 08 мая 2019

У меня есть .yml-файл, который содержит компании. У каждой компании есть подпункты, и у каждого подпункта также есть теги. Это выглядит так:

YAML

- name: acme
  subfolderitems:
    - item: books
      item-url: http://acme.com/books
      item-tag:
        - Nice book
        - Cool books
        - Wow books

Я хочу отобразить названия компаний в таблице в каждой строке вместе с тегами. Прямо сейчас я использую это решение:

код

<table>
{% for company in site.data.companies %}
{% for subfolderitem in company.subfolderitems %}
{% if subfolderitem.item == page.ref %}
    <tr>
        <td>{{ company.name }}</td>
        <td>{% for subfolderitem in company.subfolderitems %}<span class="tag">{{ subfolderitem.item-tag }}</span>{% endfor %}</td>
    </tr>
{% endif %}
{% endfor %}
{% endfor %}
</table>

Frontmatter (для книг)

---
layout: page
ref: books
title: Books
---

Моя проблема в том, что цикл для тегов не работает должным образом.

выход

<table>
  <tbody>
    <tr>
      <td>acme</td>
      <td><span class="tag">Nice bookCool booksWow books</span></td>
    </tr>
  </tbody>
</table>

Вместо этого желаемый вывод должен быть таким <span class="tag">Nice book</span><span class="tag">Cool books</span><span class="tag">Wow books</span>

Есть предложения?

1 Ответ

1 голос
/ 09 мая 2019

Если вы используете inspect filter:

<span class="tag">{{ subfolderitem.item-tag | inspect }}</span>

Вы можете видеть, что массив тегов печатается за один раз.Вам нужно добавить еще один цикл для печати тегов по одному.

<table>
{% for company in site.data.companies %}
{% for subfolderitem in company.subfolderitems %}
{% if subfolderitem.item == page.ref %}
  <tr>
    <td>{{ company.name }}</td>
    <td>{% for subfolderitem in company.subfolderitems %}
        {% for tag in subfolderitem.item-tag %}
        <span class="tag">{{ tag }}</span>
        {% endfor %}
        {% endfor %}</td>
    </tr>
{% endif %}
{% endfor %}
{% endfor %}
</table>
...