2011-08-29 9 views
45

Ho una barra laterale in formato Markdown che mi piacerebbe mostrare nel mio blog Jekyll. In precedenza avevo tentato di includerlo come {% include sidebar.markdown %} ma in realtà non eseguiva il rendering del Markdown. Posso includere con successo come:In Jekyll, c'è un modo conciso per rendere un partial Markdown?

{% capture sidebar %}{% include sidebar.markdown %}{% endcapture %} 
{{ sidebar | markdownify }} 

e anche se questa è una soluzione gestibile, preferirei un modo più elegante di realizzare questo. Qualche idea? Grazie in anticipo!

+3

Questo link è morto. Questo è uno dei motivi per cui è meglio rispondere alla domanda anziché collegarsi a una soluzione. – askewchan

+0

Mi piace la soluzione originale, ma invece di inserire l'inclusione tra l'acquisizione, ho appena inserito il mio contenuto e spostato il rendering di cattura all'interno del mio _includes/sidebar.html – stackdump

risposta

5

Jekyll ora supporta la scrittura di semplici plugin per aggiungere tag, convertitori o generatori. Dai un'occhiata a http://jekyllrb.com/docs/plugins/ per i dettagli.

+1

Ooh, non avevo pensato di creare un nuovo tag. Darò un vortice, grazie! –

+0

Ok, quindi ho provato a creare il tag corretto, ma non sono ancora abbastanza in grado di capire quale codice è necessario. Sembra che dovrò reimplementare il tag include (https://github.com/mojombo/jekyll/blob/master/lib/jekyll/tags/include.rb) ma non sono sicuro di come markdownify il suo output - presumibilmente ciò comporterebbe un cambiamento alla linea 26 ma non sono davvero un Rubyist e non so cosa fare ... –

+0

Penso che tu possa ottenere il convertitore per il tuo tipo con: convertitore = self.site.converters. trova {| c | c.matches (self.ext)} Quindi utilizzare il metodo di conversione. Vedi https://github.com/mojombo/jekyll/blob/master/lib/jekyll/converters/markdown.rb per come è implementato. –

21

Cercavo anche questo, era una valle di lacrime scoprire come farlo, non molto di contenuti di Google, il risultato più esatto era una sostanza che non avrebbe funzionato qui ... soluzione semplice morti:

./_plugins/markdown_tag.rb:

module Jekyll 
    class MarkdownTag < Liquid::Tag 
    def initialize(tag_name, text, tokens) 
     super 
     @text = text.strip 
    end 
    require "kramdown" 
    def render(context) 
     tmpl = File.read File.join Dir.pwd, "_includes", @text 
     Jekyll::Converters::Markdown::KramdownParser.new(Jekyll.configuration()).convert(tmpl) 
    end 
    end 
end 
Liquid::Template.register_tag('markdown', Jekyll::MarkdownTag) 

UPDATE: blog con esempio di utilizzo: https://web.archive.org/web/20161207125751/http://wolfslittlestore.be/2013/10/rendering-markdown-in-jekyll/

+1

Qualcosa di strano sembra accadere al markdown con questo plugin. Ad esempio, quando si usano blocchi di codice recintato, le nuove linee sembrano scomparire. Ho anche aggiunto il supporto per MathJax alla mia installazione e le barre retroverse vengono rimosse. L'inclusione esplicita data dall'OP funziona bene in entrambi i casi. Qualche idea su come aggirare questi problemi? – Mike

+0

Grazie, il tuo post sul blog è molto utile. – apotonick

Problemi correlati