No creo que haya una buena forma de hacerlo con Jekyll como está. convertible.rb
solo pasa el objeto site
a Liquid, que no contiene ningún dato específico de la página.
Sugeriría simplemente editar convertible.rb
para pasar los datos que necesita, enviar una solicitud de extracción al proyecto principal para incorporar sus cambios y usar su fork localmente para generar su sitio. ¡Hurra por el código abierto!
El siguiente parche trivial me funciona localmente contra Jekyll 0.11.0, haciendo un hash página disponible en forma líquida como context.registers[:page]
(nota: se trata de un hash pre-convertida en este punto, por lo que es posible acceder a context.registers[:page]['url']
, no context.registers[:page].url
) :
diff --git a/lib/jekyll/convertible.rb b/lib/jekyll/convertible.rb
index d33abc5..a674ef5 100644
--- a/lib/jekyll/convertible.rb
+++ b/lib/jekyll/convertible.rb
@@ -69,7 +69,7 @@ module Jekyll
#
# Returns nothing.
def do_layout(payload, layouts)
- info = { :filters => [Jekyll::Filters], :registers => { :site => self.site } }
+ info = { :filters => [Jekyll::Filters], :registers => { :site => self.site, :page => payload['page'] } }
# render and transform content (this becomes the final content of the object)
payload["pygments_prefix"] = converter.pygments_prefix
Espero que ayude!
Eso es brillante. Y completamente no intuitivo. Gracias por resolver esto. – cboettig
Pero, ¿y si necesitas agarrar el objeto 'context' en' initialize'? – jackyalcine