2011-08-29 16 views
45

Mam pasek boczny w formacie Markdown, który chciałbym pokazać na moim blogu Jekyll. Wcześniej próbowałem dołączyć to tak, jak {% include sidebar.markdown %}, ale to nie wyrenderowałoby Markdown. Mogę z powodzeniem zawrzeć to jak:Czy w Jekyll istnieje zwięzły sposób na częściowe renderowanie Markdown?

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

i chociaż jest to rozwiązanie łatwe w zarządzaniu, wolę bardziej elegancki sposób na osiągnięcie tego. Jakieś pomysły? Z góry dziękuję!

+3

Ten link jest martwy. To jeden z powodów, dla których lepiej jest odpowiedzieć na pytanie zamiast łączyć się z rozwiązaniem. – askewchan

+0

Podoba mi się oryginalne rozwiązanie, ale zamiast umieszczać elementy między przechwytywaniem, po prostu umieszczam moje treści i przeniosłem przechwytywanie + renderowanie wewnątrz mojego _includes/sidebar.html – stackdump

Odpowiedz

5

Jekyll obsługuje teraz pisanie prostych wtyczek do dodawania znaczników, konwerterów lub generatorów. Aby uzyskać szczegółowe informacje, patrz http://jekyllrb.com/docs/plugins/.

+1

Ooh, nie myślałem o stworzeniu nowego tagu. Dam ci ten wir, dzięki! –

+0

Okej, więc spróbowałem swoich sił w tworzeniu prawidłowego tagu, ale wciąż nie jestem w stanie dowiedzieć się, jaki kod jest potrzebny. Wygląda na to, że będę musiał ponownie zaimplementować znacznik include (https://github.com/mojombo/jekyll/blob/master/lib/jekyll/tags/include.rb), ale nie jestem pewien, jak oznaczyć jego zawartość - prawdopodobnie to wymagałoby zmiany w linii 26, ale nie jestem tak naprawdę Rubyistą i nie wiem co robić ... –

+0

Myślę, że możesz pobrać konwerter dla swojego typu z: konwerter = self.site.converters. znajdź {| c | c.matches (self.ext)} Następnie użyj metody convert. Zobacz https://github.com/mojombo/jekyll/blob/master/lib/jekyll/converters/markdown.rb, jak to jest zaimplementowane. –

21

szukałem to też, że był to PITA odkrywając, jak to zrobić, nie wiele treść Google najbardziej dokładne ustalenie była istota, która nie będzie działać tutaj ... martwy proste rozwiązanie:

./_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 z przykładem wykorzystania: https://web.archive.org/web/20161207125751/http://wolfslittlestore.be/2013/10/rendering-markdown-in-jekyll/

+1

Coś dziwnego zdaje się dziać z przeceną za pomocą tej wtyczki. Na przykład, przy korzystaniu z ogrodzonych bloków kodu, wydaje się, że nowe linie znikają. Dodałem także obsługę MathJax do mojej instalacji i usunięto ukośniki odwrotne. Wyraźne włączenie podane przez OP działa dobrze w obu przypadkach. Wszelkie pomysły, jak obejść te problemy? – Mike

+0

Dzięki, Twój blog jest bardzo pomocny. – apotonick

Powiązane problemy