Jekyll中如何修改文件名转换为博客post标题的大小写规则?

In Jekyll, how to change the capitalization rules for converting a file name into a blog post title?

我正在尝试在 Jekyll 中更改我的博客文章标题的大写,而不必每次都在 yaml 标题字段中键入它。默认情况下,jekyll 将文件 2016-02-22-my-blog-title 转换为标题 "My Blog Title",我希望它是 "My blog title".

我注意到我可以通过修改 _layouts/post.html 并更改行

来实现此行为
<a class="post-link" href="{{ post.url | prepend: site.baseurl }}">{{ post.title }}</a>

<a class="post-link" href="{{ post.url | prepend: site.baseurl }}">{{ post.title | downcase | capitalize}}</a>

但是,这使得无法通过在需要时向 yaml 字段添加自定义标题来覆盖大写规则。例如,不能将不是标题第一个单词的专有名词大写。是否可以更改从文件名生成默认标题的方式,同时在 yaml fron matter 中指定标题时仍然允许覆盖它?

要更改此行为,您必须使用自定义插件。 Paul Herron shows an example on his blog 他覆盖了 titleized_slug 方法。

class Jekyll::Post

  def titleized_slug
    self.slug.split(/[_-]/).join(' ').capitalize
  end
end

N.B。 post 是 2014 年的,所以上面的一些代码可能需要调整才能与 Jekyll v3 一起使用。

您必须使用一个插件来覆盖 Jekyll 生成帖子标题的方式。

这可以通过覆盖 Jekyll Utils 模块来完成。

创建一个 _plugins/titleize_overrride.rb 文件包含:

module Jekyll
  module Utils
    def titleize_slug(slug)
      slug.split(/[_-]/).join(' ').capitalize
    end
  end
end