В Eleventy нет постоянной ссылки
Я перехожу с Jekyll на Eleventy, где раньше ссылки на мои сообщения в блоге имели постоянную ссылку в этом стиле: /:title/
Что я хочу:
https://example.com/my-blog-post/
заposts/my-blog-post.md
Что я получаю:
https://example.com/posts/my-blog-post/
заposts/my-blog-post.md
Как я могу настроить это в Eleventy? На официальной странице 11ty docs указано, что она берет имя папки, котороеposts
в этом случае.
я хочу этот /:title/
для всех моих файлов уценки. Я не могу вручную установить постоянную ссылку для всех моих файлов. Есть ли способ сделать это для всегоposts
коллекция?
Я использую это репо в качестве базовой темы.
2 ответа
Итак, после долгих поисков (не в документации, они не помогли) я наконец нашел решение в этой статье.
Использование данных каталога для управления настройками по умолчанию
По умолчанию Eleventy будет поддерживать структуру ваших файлов содержимого при создании вашего сайта. В нашем случае это означает
/_basic-syntax/lists.md
генерируется как/_basic-syntax/lists/index.html
. Как и Jekyll, мы можем изменить место сохранения файлов с помощью свойства постоянной ссылки. Например, если мы хотим, чтобы URL-адрес этой страницы был /basic-syntax/lists.html, мы можем добавить следующее:--- title: Lists syntax-id: lists api: "no" permalink: /basic-syntax/lists.html ---
Опять же, это, вероятно, не то, чем мы хотим управлять по отдельности, но опять же, у Eleventy есть функции, которые могут помочь: данные каталога и переменные постоянных ссылок.
Например, для достижения вышеуказанного для всего содержимого, хранящегося в
_basic-syntax
папку, мы можем создать файл JSON, который имеет имя этой папки и находится внутри нее, т.е._basic-syntax/_basic-syntax.json
и установите наши значения по умолчанию. Для постоянных ссылок мы можем использовать шаблоны Liquid, чтобы построить желаемый путь:{ "layout": "syntax", "tag": "basic-syntax", "permalink": "basic-syntax/{{ title | slug }}.html" }
В этой последней части используйте это:
{
"permalink": "/{{ title | slug }}/"
}
Вы можете настроить постоянные ссылки для каждой страницы или для каждой коллекции . Предположим, вы создали папку сообщений, а затем добавили записи. Файл 11tydata.json с содержимым для установки базовых значений для коллекции.
{
"eleventyExcludeFromCollections": false,
"layout": "post",
"permalink": "post/{{ title }}/",
"tags": [
"posts"
]
}