2

我正在从 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

我使用这个 repo作为基本主题。

4

2 回答 2

5

所以在搜索了很多(不是文档)之后,我终于在这篇文章中找到了解决方案。

在该部分的最后一部分,使用这个:

// posts.json (or whatever your collection name is)
{
   // ...
   "permalink": "/{{ title | slug }}/"
   // ...
}

摘抄:

使用目录数据管理默认值

默认情况下,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设置我们的默认值。对于永久链接,我们可以使用 Liquid 模板来构建我们想要的路径:

{
   "layout": "syntax",
   "tag": "basic-syntax",
   "permalink": "basic-syntax/{{ title | slug }}.html"
}
于 2020-05-02T19:13:18.337 回答
0

您可以为每个页面或每个集合设置永久链接。假设您创建一个帖子文件夹,然后添加一个帖子。11tydata.json文件,其中包含为集合设置基本值的内容。

{
  "eleventyExcludeFromCollections": false,
  "layout": "post",
  "permalink": "post/{{ title }}/",
  "tags": [
    "posts"
  ]
}
于 2021-03-13T18:37:39.657 回答