ruby - 包含子目录作为 Jekyll 的帖子 URL 的一部分

标签 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/ 这样的东西会让 url 看起来像 http://blog/en/category-1/category-2/后缀名.

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

我是否遗漏了一些可以让我根据需要使用 /en/ 作为 URL 的一部分的东西?

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

最佳答案

你可以设置一个 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/

关于ruby - 包含子目录作为 Jekyll 的帖子 URL 的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54189226/

相关文章:

ruby - 在不缩进的情况下将 rake 任务添加到 namespace ?

ruby-on-rails - 测试速度 : ActiveRecord use_transactional_fixtures vs. DatabaseCleaner.strategy = :transaction

ruby-on-rails - 用符号转换哈希数组

html - 在 Jekyll 的 CSS 中使用 liquid tempting 以每页为基础调整 div 的背景颜色

液体模板过滤器中的日期数学/操作

jekyll - 从 Liquid 覆盖 YAML frontmatter 变量

ruby - 如何使用 rest-client 资源检查响应代码

ruby - Jekyll 不解释 Markdown

ruby - 尝试在 Jekyll 插件中生成作者页面以进行分页

jekyll - 检查变量类型是否为 hash 或 liquid 数组