24

私の Jekyll サイトのいくつかをシンプルに保つために、私は常に同じレイアウトを使用しています。つまり、いつもこんなことを書いています。. .

---
layout: default
title: Here's my Title
---

. . . 私のページの上部にあるYAML Front Matterとして。

しかし、私が書きたいのはそれだけです。. .

---
title: Here's my Title
---

. . . layout: default上記のように明示的に " " (またはその他) を記述したかのように、特定のレイアウトを使用する必要があると Jekyll に想定させます。

でこの動作を指定する方法がわかりません_config.ymlこれを可能にするJekyllプラグインを書くことができるかもしれません。. . 何か案は?

4

4 に答える 4

27

これは、 Frontmatter のデフォルトを使用して実行できます。

defaults:
  -
    scope:
      path: "" # empty string for all files
    values:
      layout: "default"

この設定は、Jekyllバージョン 2.0.0以降で使用できます。

于 2014-05-21T08:21:07.527 に答える
5

より短く、モンキーパッチなし:

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

Jekyll::Post.send(:include, ImplicitLayout)

警告: GH ページはプラグインを実行しません。

于 2013-07-19T07:04:51.610 に答える
0

デフォルトでは、これを行うことはできません。Jekyll は、レイアウトを指定するために YAML を必要とし、どこにドロップするかを認識します。

于 2013-03-02T20:34:01.847 に答える
0

としてドロップできる Jekyll プラグインを_plugins/implicit-layout.rb次に示します。たとえば、次のようになります。

# By specifying an implicit layout here, you do not need to
# write, for example "layout: default" at the top of each of
# your posts and pages (i.e. in the "YAML Front Matter")
#
# Please note that you should only use this plugin if you
# plan to use the same layout for all your posts and pages.
# To use the plugin, just drop this file in _plugins, calling it
# _plugins/implicit-layout.rb, for example
IMPLICIT_LAYOUT = 'default'

module Jekyll
  module Convertible

    def read_yaml(base, name)
      self.content = File.read(File.join(base, name))

      if self.content =~ /^(---\s*\n.*?\n?)^(---\s*$\n?)/m
        self.content = $POSTMATCH

        begin
          self.data = YAML.load($1)
          self.data["layout"] = IMPLICIT_LAYOUT
        rescue => e
          puts "YAML Exception reading #{name}: #{e.message}"
        end
      end

      self.data ||= {}
    end

  end
end

freenode で #jekyll をぶらぶらして、これがモンキー パッチであることを理解しました。

Alan W. Smith がコメントしたように、" layout: default"を入れること_config.ymlができれば、このプラグインの素晴らしい改善になります。

理想的には (私の観点から)、この機能を Jekyll 自体に組み込むことができるので、プラグインは必要ありません。

于 2011-12-15T03:42:58.760 に答える