11ти рендеринга одного поста на файл данных

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

Мой вариант использования состоит в том, что у меня есть несколько описаний вакансий в формате yaml: одна страница yaml для каждой вакансии. Итак, я хочу создать страницу для каждого файла данных.

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

Спасибо за любые указатели.


person pat    schedule 02.08.2020    source источник


Ответы (1)


Да, вы можете использовать коллекции в сочетании с разбиение на страницы, чтобы создать один выходной файл для каждого задания. Ключ использует размер пагинации 1, таким образом, вам нужна только одна страница в каталоге вашего сайта, и она будет создавать одну страницу вывода для каждого задания. Это описано в разделе Создание страниц на основе данных.

Пример в связанной статье документации использует один файл данных (possums.json) и разбивает на страницы объект, который одиннадцать создает для этого файла. Если у вас есть один файл данных на элемент (задание в вашем случае), вы можете добиться того же, поместив все эти файлы данных в родительский каталог внутри каталога _data и перебрав его. Ключевым моментом здесь является понимание того, как Eleventy обрабатывает вложенные каталоги в глобальном каталоге данных. и что вы можете использовать разбиение на страницы с объектом.

Итак, если ваши файлы заданий yaml структурированы следующим образом:

  • _data/jobs/job1.yaml
  • _data/jobs/job2.yaml
  • _data/jobs/job3.yaml

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

pagination:
    data: jobs
    size: 1
    alias: job
    resolve: values
permalink: "jobs/{{ job.name | slug }}/"
person MoritzLost    schedule 03.08.2020
comment
Спасибо @MoritzLost. Поэтому я хочу, чтобы один шаблон использовался для нескольких файлов данных. Я думаю, что коллекции и разбивка на страницы предназначены для использования одного шаблона для одного файла данных. Итак, если у меня есть файлы данных: jd1, yaml, jd2.yaml, jd3.yaml, чтобы использовать разбиение на страницы, я считаю, что мне понадобится шаблон для каждого файла yaml. Однако я хочу использовать только один файл шаблона. Не могли бы вы привести несколько примеров кода, показывающего, как, по вашему мнению, это будет работать? Я имел в виду документы и не могу понять, как - person pat; 04.08.2020
comment
@pat Я добавил пример. Ключ состоит в том, чтобы поместить все ваши файлы данных о вакансиях в подкаталог, а затем использовать имя подкаталога для разбивки на страницы. Не уверен, что пример будет работать из коробки (сейчас не могу протестировать), но если вы прочитаете две дополнительные страницы документов, на которые я ссылался выше, вы сможете заставить его работать с одним файлом шаблона. - person MoritzLost; 04.08.2020
comment
Эй, это сработало в первый раз. Действительно просто. Большое спасибо за более подробное объяснение. - person pat; 05.08.2020
comment
Также тема vredeburg использует этот трюк для разбивки на страницы по категориям. Вы можете посмотреть там рабочий образец. - person baHI; 13.03.2021
comment
resolve: values была той частью, которую мне не хватало. Спасибо! - person Zach Saucier; 08.04.2021