Итак, у меня есть куча рецептов коктейлей в папке, каждый из которых имеет свое имя, например, отвертку.json или для взрослых-горячих-шоколадов.json с изображением с соответствующим названием, и каждый рецепт выглядит так:
{
"name": "Adult Hot Chocolate",
"description": "Appropriately named 'adult hot chocolate', this recipe is one of the easiest and most common ways to spike your cocoa. To make it, you will simply add a shot of peppermint schnapps to your favorite hot chocolate and a delicious, warm drink is yours to enjoy.",
"github": "thesanjeevsharma",
"ingredients": [
{
"quantity": "2",
"measure": "oz",
"ingredient": "Peppermint Schnapps"
},
{
"quantity": "6",
"measure": "oz",
"ingredient": "Hot Chocolate"
},
{
"quantity": "",
"measure": "",
"ingredient": "Garnish: whipped cream"
},
{
"quantity": "",
"measure": "",
"ingredient": "Garnish: chocolate sprinkles or shaved chocolate"
}
],
"directions": [
"Gather the ingredients.",
"Pour the schnapps into a warm mug or Irish coffee glass.",
"Fill with hot chocolate.",
"Stir well.",
"Optionally, top with whipped cream and chocolate sprinkles or shaved chocolate.",
"Serve and enjoy!"
],
"image": "adult-hot-chocolate.jpg",
"keywords": [
"chocolate",
"peppermint",
"schnapps"
]
}
Я хочу создать макет и случайным образом выбрать один рецепт и изображение для показа на своем веб-сайте. Я знаю, как это сделать, если бы все они были в одном большом документе YAML, но мне непонятно, как сказать Jekyll анализировать отдельные файлы, чтобы я мог сослаться на один из них случайным образом.
Другая возможность состоит в том, чтобы объединить их в один большой json, но тогда я не мог бы так же легко извлекать новые рецепты из первоисточника.
Любая помощь будет принята с благодарностью!
Пожалуйста, ознакомьтесь с документацией по данным jekyll.
Поэтому вам нужно создать папку _data
, когда ее еще нет.
Затем скопируйте cocktail
файл json во вложенную папку, например. _data/cocktails
.
Чтобы прочитать список коктейлей, вам нужно создать страницу с html или уценкой.
Содержимое html может быть примерно таким
---
layout: default
title: "My Cocktails"
---
<ul>
{% for file in site.data.cocktails%}
{% assign cocktail = file[1] %} {% comment %}The assign is needed, because we have different json files!{% endcomment %}
<li><strong>{{ cocktail.name }}</strong> - {{ cocktail.description}}</li>
{% endfor %}
</ul>
Спасибо! Я читал документацию пару раз, я просто не очень опытен, поэтому немного не понял о назначении. Что делает файл [1]? Почему это не файл [0], например. Мой гуглинг не может найти других примеров такого использования. В очередной раз благодарим за помощь.
Привет. Мне нужно провести небольшое исследование, где я нашел файл[1]... Но что более важно, работает ли он у вас?
Вот пост к индексу массива, stackoverflow.com/a/56177784/10655742
Да! Спасибо! После реализации вашего ответа для главной страницы напитков, в которой перечислены все из них, я понял, что генератор страниц данных, который я использовал для своих страниц рецептов (сгенерированный из одного большого файла), также может работать с отдельными файлами, и это сработало.
Не уверен, хотите ли вы взглянуть, но у меня возникла проблема, связанная с созданием страниц с использованием правильного URL-адреса: stackoverflow.com/questions/65620610/…
Если вы хотите соединить файлы json, вы можете взглянуть на Объединение многих json-файлов с помощью jq или Сценарий оболочки для объединения 5 или более файлов json вместе . Вы можете «слить» jsons в большой с помощью хука.