Non penso che ci sia un buon modo di farlo con Jekyll così com'è. convertible.rb
passa solo l'oggetto site
a Liquid, che non contiene dati specifici della pagina.
Suggerirei semplicemente di modificare convertible.rb
per passare i dati necessari, inviare una richiesta di pull al progetto principale per inserire le modifiche e utilizzare localmente la forcella per generare il sito. Urrà per l'open source!
La seguente patch banale lavora per me a livello locale contro Jekyll 0.11.0, facendo una pagina di hash disponibili in liquido come context.registers[:page]
(nota: si tratta di un hash pre-convertita a questo punto, in modo che ci si accede context.registers[:page]['url']
, non 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
Spero che ti aiuti!
fonte
2011-09-20 06:27:40
Questo è brillante. E completamente non intuitivo. Grazie per aver capito. – cboettig
E se fosse necessario prendere l'oggetto 'context' su' initialize'? – jackyalcine