#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 %}