В 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"
  ]
}
Другие вопросы по тегам