2011-08-29 57 views
45

我有一个Markdown格式的边栏,我想在我的Jekyll博客中显示。我之前曾尝试将其包含在内,例如{% include sidebar.markdown %},但它实际上并不会显示降价。我可以成功地包括它想:在Jekyll中,是否有一种简洁的方式来呈现Markdown偏好?

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

,虽然这是一个管理的解决方案,我宁愿完成这一个更优雅的方式。有任何想法吗?提前致谢!

+3

此链接已经死了。这是回答问题而不是链接到解决方案更好的原因之一。 – askewchan

+0

我喜欢最初的解决方案,但不是将捕获之间的包含,而是将我的内容,并将捕获+渲染移入我的_includes/sidebar.html – stackdump

回答

5

Jekyll现在支持编写简单的插件来添加标签,转换器或生成器。有关详细信息,请参阅http://jekyllrb.com/docs/plugins/

+1

哦,我没有想过创建一个新的标记。我会给你一个旋转,谢谢! –

+0

好的,所以我尝试过创建正确的标签,但我仍然无法弄清楚需要什么代码。它看起来像我必须重新实现包含标记(https://github.com/mojombo/jekyll/blob/master/lib/jekyll/tags/include.rb),但我不知道如何降低其输出 - 据推测这将涉及26号线的变化,但我不是一个真正的Rubyist,不知道该怎么办... –

+0

我认为你可以得到你的类型的转换器: converter = self.site.converters。找到{| c | c.matches(self.ext)} 然后使用convert方法。请参阅https://github.com/mojombo/jekyll/blob/master/lib/jekyll/converters/markdown.rb了解如何实施。 –

21

我一直在寻找这也,这是一个PITA发现如何做到这一点,没有太多的谷歌内容,最准确的发现是一个要点,不会在这里工作......死了简单的解决方案:

./_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:博客与用法示例:https://web.archive.org/web/20161207125751/http://wolfslittlestore.be/2013/10/rendering-markdown-in-jekyll/

+1

有些奇怪的事情似乎发生在这个插件的降价上。例如,使用围栏代码块时,换行符似乎消失。我还在我的安装中添加了对MathJax的支持,并且反斜杠被删除。 OP给出的明确包含在两种情况下都很好。任何想法如何解决这些问题? – Mike

+0

谢谢,您的博客文章非常有帮助。 – apotonick

相关问题