Skip to content

Instantly share code, notes, and snippets.

@tmtk75
Created November 30, 2011 08:10
Show Gist options
  • Star 12 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save tmtk75/1408402 to your computer and use it in GitHub Desktop.
Save tmtk75/1408402 to your computer and use it in GitHub Desktop.
Jekyll Markdown Tag
=begin
Jekyll tag to include Markdown text from _includes directory preprocessing with Liquid.
Usage:
{% markdown <filename> %}
Dependency:
- kramdown
=end
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
site = context.registers[:site]
tmpl = (Liquid::Template.parse tmpl).render site.site_payload
html = Kramdown::Document.new(tmpl).to_html
end
end
end
Liquid::Template.register_tag('markdown', Jekyll::MarkdownTag)
@kamlekar
Copy link

Even after inserting this code in _plugins directory, I am getting page build error:

The tag markdown in _posts/2015-08-26-compiling-html-templates-to-html-pages.md is not a recognized Liquid tag.

I am using kramdown markdown.

Please help.

@c100k
Copy link

c100k commented Nov 15, 2015

@kamlekar I've just had the same problem. I forgot to restart my site with jekyll serve.

@apburton84
Copy link

How would variables be passed into the included markdown ?

{% markdown query_parameters.md param="value" %}

Liquid Exception: No such file or directory - _includes/query_parameters.md param="value" in _posts/2016-01-22-user.markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment