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

时间:2019-01-14 21:08:54

标签: ruby jekyll liquid

我正在建立英语和西班牙语两种语言的博客。我的意图是直接从基本URL http://blog/访问西班牙语的默认内容,从http://blog/en访问英语内容。

通过检查我在每个帖子开头问题中设置的locale变量进行分页时,我已经拥有所有代码可以仅通过英语或西班牙语循环浏览帖子。尽管我的博客文章没有相同的文件名,但我使用最前面的另一个变量ref来链接它们。

所以对于西班牙语的帖子A和英语的帖子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

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

这些帖子已经具有其语言之外的类别,因此将它们放在/en/_posts中是行不通的,因为在_config.yml中将永久链接指定为permalink: /:categories/:year/:month/:title/之类的内容时,网址看起来像http://blog/en/category-1/category-2/post-name

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

是否缺少我想使用的/en/作为URL的一部分?

菜单语言选择器和分页功能均只显示所选语言的帖子。但是,当将鼠标悬停在英语帖子上时,尽管我将它们放在_posts/en中,但该子文件夹不会成为URL的一部分。当我尝试相反的操作时,在项目根目录中创建一个名为en的新文件夹并在其中添加所有英文帖子的情况下,也会出现类似en/_posts/

的情况。

1 个答案:

答案 0 :(得分:2)

您可以为英语页面设置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/