2011-08-29 7 views
45

Tengo una barra lateral con formato de Markdown que me gustaría mostrar en mi blog de Jekyll. Previamente había intentado incluirlo como {% include sidebar.markdown %}, pero en realidad no representaría el Markdown. Puedo incluir con éxito como:En Jekyll, ¿hay una forma concisa de hacer un Markdown parcial?

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

y aunque esta es una solución manejable, preferiría una forma más elegante de llevar a cabo esto. ¿Algunas ideas? ¡Gracias por adelantado!

+3

Este enlace está muerto. Esta es una razón por la cual es mejor responder la pregunta en lugar de vincularla a una solución. – askewchan

+0

Me gusta la solución original, pero en lugar de poner la inclusión entre la captura, simplemente puse mi contenido y moví el renderizado de captura + dentro de _includes/sidebar.html – stackdump

Respuesta

5

Jekyll ahora es compatible con la escritura de complementos simples para agregar etiquetas, convertidores o generadores. Eche un vistazo a http://jekyllrb.com/docs/plugins/ para más detalles.

+1

Ooh, no había pensado en crear una nueva etiqueta. Daré un giro, ¡gracias! –

+0

Está bien, así que he intentado crear la etiqueta correcta pero todavía no soy capaz de descifrar qué código es necesario. Parece que tendré que volver a implementar la etiqueta de inclusión (https://github.com/mojombo/jekyll/blob/master/lib/jekyll/tags/include.rb), pero no estoy seguro de cómo marcar la salida. presumiblemente eso implicaría un cambio en la línea 26 pero no soy realmente un Rubyist y no sé qué hacer ... –

+0

Creo que puede obtener el convertidor para su tipo con: converter = self.site.converters. encuentra {| c | c.matches (self.ext)} A continuación, utilice el método de conversión. Consulte https://github.com/mojombo/jekyll/blob/master/lib/jekyll/converters/markdown.rb para saber cómo se implementa esto. –

21

que estaba buscando para esto también, fue un PITA descubrir cómo hacerlo, no hay mucho contenido de Google, el hallazgo más exacta era una esencia que no funcionaría aquí ... solución sencilla muertos:

./_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) 

ACTUALIZACIÓN: blog con el uso de ejemplo: https://web.archive.org/web/20161207125751/http://wolfslittlestore.be/2013/10/rendering-markdown-in-jekyll/

+1

Algo extraño parece suceder con el complemento con este complemento. Por ejemplo, cuando se usan bloques de código delimitados, las nuevas líneas parecen desaparecer. También agregué compatibilidad con MathJax a mi instalación y se eliminaron las barras diagonales inversas. La inclusión explícita dada por el OP funciona bien en ambos casos. ¿Alguna idea de cómo solucionar estos problemas? – Mike

+0

Gracias, tu publicación de blog es muy útil. – apotonick

Cuestiones relacionadas