在 Jekyll 的帖子 URL 中包含子目录

Sam*_*mer 5 ruby liquid jekyll

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

在分页时,我已经拥有了所有代码来循环浏览仅用英语或西班牙语编写的帖子,方法是检查locale我在每个帖子前面设置的变量。虽然我的博客文章没有相同的文件名,但我在前面使用另一个名为ref.

因此,对于西班牙语的帖子 A 和英语的帖子 B,我将有以下内容:

2018-01-01-post-A.md

---
locale: en
ref: my-ref
---
foo
Run Code Online (Sandbox Code Playgroud)

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

---
locale: es
ref: my-ref
---
bar
Run Code Online (Sandbox Code Playgroud)

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

这些帖子除了他们的语言之外已经有了他们的类别,所以把它们放在里面/en/_posts是行不通的,因为当将永久链接指定_config.yml为类似的东西permalink: /:categories/:year/:month/:title/会使 url 看起来像http://blog/en/category-1/category-2/post-name.

在每个英文帖子中定义固定链接也不是一种选择,因为我希望它们是从帖子数据(日期和标题)中生成的。

有什么我遗漏的东西可以让我根据需要/en/用作 URL 的一部分吗?

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

小智 4

您可以为您的英文页面设置默认的 frontmatter

# _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/
Run Code Online (Sandbox Code Playgroud)