包含子目录作为 Jekyll 的一部分 post URL

Include subdirectory as part of Jekyll's post URL

我正在用英语和西班牙语建立一个博客。我的目的是直接从基础 url: http://blog/ 访问默认的西班牙语内容和 http://blog/en 的英语内容。

通过检查我在每个 post 前面设置的 locale 变量进行分页时,我已经拥有所有循环遍历 posts 的代码。虽然我的博客 post 没有相同的文件名,但我 link 他们在前面的内容中使用了另一个名为 ref.

的变量

因此,对于 post A(西班牙语)和 post B(英语),我会有这样的内容:

2018-01-01-post-A.md

---
locale: en
ref: my-ref
---
foo

2019-01-04-post-B.md:

---
locale: es
ref: my-ref
---
bar

我的问题是:我应该把我的英语 post 放在哪里,以便可以通过 http://blog/en/post-name/ 访问它们?

那些 post 除了他们的语言之外已经有了他们的类别,所以将它们放在 /en/_posts 中是行不通的,就像在 [=20= 中指定 permalink 一样] 到 permalink: /:categories/:year/:month/:title/ 之类的东西会使 url 看起来像 http://blog/en/category-1/category-2/post-name.

在每个英语 post 中定义一个 permalink 也不是一个选项,因为我希望它们是从 post 数据(日期和标题)生成的。

有没有我遗漏的东西可以让我使用 /en/ 作为我想要的 URL 的一部分?

菜单语言选择器和分页都有效,仅以所选语言显示 posts。但是,当鼠标悬停在英文的 post 上时,虽然我将它们放在 _posts/en 中,但子文件夹并没有成为 url 的一部分。当我尝试相反的方法时,也会发生同样的情况,在项目根目录中创建一个名为 en 的新文件夹,并在其中添加所有英文 posts,给我留下类似 en/_posts/[=27 的东西=]

您可以为英文页面设置 frontmatter default

# _config.yml

defaults:
-
    scope:
      locale: "en" # To sort by locale. You could also sort by path.
      type: "posts"
    values:
      permalink: en/:categories/:year/:month/:title/