Ответ 1
Это может быть сделано с использованием значений по умолчанию Frontmatter:
defaults:
-
scope:
path: "" # empty string for all files
values:
layout: "default"
Чтобы некоторые из моих сайтов Jekyll были простыми, я всегда использую один и тот же макет. То есть, я всегда пишу что-то вроде.,.
---
layout: default
title: Here my Title
---
., как YAML Front Matter в верхней части моих страниц.
Однако я бы предпочел написать.,.
---
title: Here my Title
---
., и Jekyll предположил, что он должен использовать определенный макет, как если бы я явно написал "layout: default
" (или что-то еще), как указано выше.
Я не вижу способа указать это поведение в _config.yml
. Возможно, я мог бы написать Jekyll plugin, который позволит это., любые идеи?
Это может быть сделано с использованием значений по умолчанию Frontmatter:
defaults:
-
scope:
path: "" # empty string for all files
values:
layout: "default"
Короче и без патчей обезьян:
# _plugins/implicit_layout.rb
module ImplicitLayout
def read_yaml(*args)
super
self.data['layout'] ||= 'post'
end
end
Jekyll::Post.send(:include, ImplicitLayout)
Предостережение: страницы GH не будут запускать ваши плагины.
Здесь плагин 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
От болтаться на #jekyll на freenode, мне дано понять, что это патч обезьяны.
Как заметил Алан У. Смит, возможность добавления "layout: default
" в _config.yml
будет хорошим улучшением для этого плагина.
В идеале (с моей точки зрения) эта функциональность может быть включена в Jekyll, поэтому плагин не понадобится.
По умолчанию вы не можете этого сделать. Jekyll нуждается в YAML, чтобы указать макет, чтобы он знал, куда его вставить.