Как сайт Eleventy может отображать список страниц в каталоге? - PullRequest
0 голосов
/ 03 апреля 2019

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

Например:

|--section1
|  |--index.njk // this should list /section1/page1/, /section2/page2/, etc.
|  |--page1.md
|  |--page2.md
|   --(etc...)
|--section2
|  |--index.njk // this should list /section2/page1/, etc.
|  |--page1.md
|   --(etc..)

Похоже, что Eleventy предоставляет функциональность, аналогичную этой, с функцией collection . Однако кажется, что коллекции используют только данные, представленные в тегах.

Я могу получить желаемый вывод, указав tags: ["section1"] в начале каждого page.md. Однако это означает, что нужно поддерживать больше избыточных метаданных.

Похоже, что я мог бы также сгенерировать нужные мне коллекции, используя функцию eleventyConfig.addCollection, которая будет сортировать по collections.all() и возвращать коллекции на основе их outputPath. Но мне это очень нравится, и мне интересно, есть ли более элегантное решение.

В идеале я бы хотел добавить что-то подобное в мой шаблон index.njk:

{%- for page in directory -%}
{# do stuff #}
{%- endfor -%}

или, возможно,

{%- for page in collections.directory -%}
{# do stuff #}
{%- endfor -%}

Есть ли что-то, чего мне не хватает?

1 Ответ

0 голосов
/ 04 апреля 2019

Я понял это.

Вы можете добавить файл данных в каждый каталог и добавить имя каталога в виде тега.

Например, section1/section1.json будет содержать:

{
    "tags": ["Section 1"]
}

Это будет применяться ко всем страницам в этом каталоге. Однако , любые теги, указанные на отдельных страницах, будут переопределять его. Вы должны включить функцию глубокого слияния данных для объединения тегов каталога и страницы. Просто добавьте eleventyConfig.setDataDeepMerge(true); в ваш .eleventy.js файл конфигурации.

В документации говорится, что эта функция будет включена по умолчанию в будущих версиях. На момент написания статьи она по-прежнему доступна только для подписки.

...