with what site pages new how blog best ruby jekyll jekyll-extensions

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?



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.