ruby - what - jekyll with bundle
¿Cómo puedo hacer que Jekyll use un diseño sin especificarlo? (4)
Aquí hay un complemento de Jekyll que puede colocar como _plugins/implicit-layout.rb
, por ejemplo:
# 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
De pasar el rato en #jekyll en freenode, tengo que entender que esto es un parche de mono.
Como comentó Alan W. Smith, ser capaz de poner " layout: default
" en _config.yml
sería una buena mejora para este complemento.
Idealmente (desde mi perspectiva), esta funcionalidad podría incorporarse en el propio Jekyll, por lo que no sería necesario un complemento.
Para mantener algunos de mis sitios Jekyll simples, siempre estoy usando el mismo diseño. Es decir, siempre estoy escribiendo algo así. . .
---
layout: default
title: Here''s my Title
---
. . . como la materia delantera YAML en la parte superior de mis páginas.
Lo que prefiero escribir, sin embargo, es solo. . .
---
title: Here''s my Title
---
. . . y haga que Jekyll suponga que debería usar un diseño determinado, como si hubiera escrito explícitamente " layout: default
" (o lo que sea), como se muestra arriba.
No veo una manera de especificar este comportamiento en _config.yml
. Tal vez podría escribir un plugin de Jekyll que permitiera esto. . . ¿algunas ideas?
Esto se puede hacer usando los valores por defecto de Frontmatter :
defaults:
-
scope:
path: "" # empty string for all files
values:
layout: "default"
Esta configuración está disponible desde la versión 2.0.0 de Jekyll.
Más corto y sin parches de monos:
# _plugins/implicit_layout.rb
module ImplicitLayout
def read_yaml(*args)
super
self.data[''layout''] ||= ''post''
end
end
Jekyll::Post.send(:include, ImplicitLayout)
Advertencia: las páginas GH no ejecutarán tus complementos.
Por defecto, no puedes hacer esto. Jekyll necesita el YAML para especificar el diseño para que sepa dónde colocarlo.