В Eleventy нет постоянных ссылок - PullRequest
0 голосов
/ 01 мая 2020

Я мигрирую из 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? Официальная страница 1015 * в 11-ти документах гласит, что она берет имя папки, в данном случае posts.

Я хочу этот /:title/ для всех моих файлов уценки. Я не могу вручную установить постоянную ссылку во всех моих файлах. Есть ли способ сделать это для всей коллекции posts?

Я использую это хранилище в качестве базовой темы.

1 Ответ

0 голосов
/ 02 мая 2020

Итак, после большого поиска (не документов, которые были бесполезны), я наконец нашел решение в этой статье .

Использование данных каталога для управления значениями по умолчанию

По умолчанию Eleventy будет поддерживать структуру ваших файлов контента при создании вашего сайта. В нашем случае это означает, что /_basic-syntax/lists.md генерируется как /_basic-syntax/lists/index.html. Как и в случае с Jekyll, мы можем изменить место сохранения файлов, используя свойство permalink. Например, если мы хотим, чтобы 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 и устанавливает наши значения по умолчанию. Для постоянных ссылок мы можем использовать жидкие шаблоны для построения желаемого пути:

{
   "layout": "syntax",
   "tag": "basic-syntax",
   "permalink": "basic-syntax/{{ title | slug }}.html"
}

В этой последней части используйте это:

{
   "permalink": "/{{ title | slug }}/"
}
...