如何让Jekyll使用布局而不指定它?

Phi*_*bin 24 ruby jekyll jekyll-extensions

为了让我的一些Jekyll网站变得简单,我总是使用相同的布局.也就是说,我总是在写类似的东西...

---
layout: default
title: Here's my Title
---
Run Code Online (Sandbox Code Playgroud)

...作为我页面顶部的YAML Front Matter.

然而,我宁愿写的只是...

---
title: Here's my Title
---
Run Code Online (Sandbox Code Playgroud)

...并让Jekyll假设它应该使用某种布局,就好像我已经明确地写了" layout: default"(或其他),如上所述.

我没有看到指定此行为的方法_config.yml.也许我可以写一个允许这个的Jekyll插件...有任何想法吗?

Mar*_*tin 27

这可以使用Frontmatter默认值完成:

defaults:
  -
    scope:
      path: "" # empty string for all files
    values:
      layout: "default"
Run Code Online (Sandbox Code Playgroud)

此设置自Jekyll 版本2.0.0起可用.


Hak*_*ari 5

更短,没有猴子补丁:

# _plugins/implicit_layout.rb
module ImplicitLayout
  def read_yaml(*args)
    super
    self.data['layout'] ||= 'post'
  end
end

Jekyll::Post.send(:include, ImplicitLayout)
Run Code Online (Sandbox Code Playgroud)

警告:GH Pages不会运行你的插件.