Сравнение данных из разных файлов Jekyll_data

#json #jekyll #liquid

#json #jekyll #жидкость

Вопрос:

Чтобы установить сцену, у меня есть информация об авторе, хранящаяся в directory.json, внутри моей папки Jekyll _data.

 "name": "Brandon Bellew",
    "bio": "Brandon Bellew is a great writer.",
    "email": "hal@eta.org",
    "specialties": "introspection, ventilation systems, memorization, post-prandial revelry",
    "photo": "http://www.tpgweb2.net/headshots/thumbs/brandon-b-thumb-2.jpg"
  

У меня также есть информация о статье, хранящаяся в catalogue.json, также внутри моей папки Jekyll _data

     "name": "Beginner's Guide to Google Analytics",
    "author": "Brandon Bellew",
    "date": "May 18 2016",
    "description": "The Google Analytics (GA) dashboard is quite intuitive, and it's easy to collect basic information (number of users on the site, average time spent on site, etc.) without having a deep background in analytics. But what about specifics?",
    "category": "Analytics"
  

Я пытаюсь перебрать все статьи в моем каталоге.файл json и отобразите эту информацию о статье, но извлеките фотографию из правильного автора в моем файле directory.json.

По сути, я пытаюсь заставить это сделать: если «автор» статьи в каталоге совпадает с «именем» автора в элементе каталога, отобразите фотографию, связанную с этим автором. Таким образом, мне не нужно хранить фотографию автора в отдельном элементе для каждой статьи, которую они пишут.

Вот моя неудачная попытка получить фотографию от правильного автора в каталоге:

 <h4>Articles</h4>
  {% for item in site.data.catalogue %} 
        {% for item in site.data.directory %}
        {% if item.name == page.author %}
        <img src="{{ item.photo }}" >
        {% endif %}
        {% endfor %}
  {% endfor %}
  

Возможно ли это с помощью Jekyll или мне нужно структурировать его по-другому?

Ответ №1:

Я считаю, что удаление повторяющейся item ссылки исправит ваш текущий код:

 {% for catalogue in site.data.catalogue %} 
  {% for item in site.data.directory %}
    {% if item.name == catalogue.author %}
      <img src="{{ item.photo }}" >
    {% endif %}
  {% endfor %}
{% endfor %}
  

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

authors.json:

 {
    "Fred Flintstone": {
      "bio": "Doesn't wear shoes"
      "image": "/images/fred.png"
    }
}
  

Затем вы можете получить доступ к изображению следующим образом (вы могли бы улучшить это, чтобы проверить, существует ли автор):

 {% for catalogue in site.data.catalogue %} 
  <img src="{{ site.data.authors[catalogue.author].photo }}" >
{% endfor %}
  

Ответ №2:

Вы можете использовать where фильтр следующим образом :

 {% for article in site.data.catalogue %} 
  {% assign author = site.data.directory | where: 'name', article.author | first %}
  {% if author %}<img src="{{ author.photo }}" >{% endif %}
  {% endfor %}
{% endfor %}