随着Jekyll 3,我可以在实际的Markdown解析之前转换帖子的Markdown吗?
我想使用Jekyll Responsive Image plugin来为我的帖子的图片生成适当的响应图片和srcset
/sizes
属性。随着Jekyll 3,我可以在实际的Markdown解析之前转换帖子的Markdown吗?
但是我也希望能够在提供像MacDown这样的实时预览的软件中编辑我的帖子,该软件只理解图像的标准Markdown语法。
这就是为什么我想知道是否有一种方法-a一些排序 - 的插件告诉Jekyll对于变换图像,我会把我的降价文件的标准降价语法...

...这个语法具体到Jekyll Responsive Image plugin:
{% responsive_image path: path/to/image.jpg alt: "alt text" %}
然后,化身可以继续,并使用Kramdown生成HTML ...
我也创建an issue in the plugin's Github,但更普遍的答案也很好,也许对其他需求有用。
是的,这是绝对有可能的。由于Jekyll 3,你可以有多个转换器每个文件扩展名。这允许您创建像转换器:
class ResponsiveImageify < Jekyll::Converter
priority :high
def matches(ext)
ext.downcase == ".md"
end
def convert(content)
content.gsub(/\!\[(.+)\]\((.+)\)/, '{% responsive_image path: \2 alt: \1 %}')
end
end
那转换器将gsub
任何.md
文件的内容。
希望这有助于!
最简单的解决方法是使用新的Jekyll hooks
一个非常原始的插件可以是:
Jekyll::Hooks.register :posts, :pre_render do |post, payload|
docExt = post.extname.tr('.', '')
# only process if we deal with a markdown file
if payload['site']['markdown_ext'].include? docExt
newContent = post.content.gsub(/\!\[(.+)\]\((.+)\)/, '{% responsive_image path: \2 alt: \1 %}')
post.content = newContent
end
end
这些信息存储在_plugins/img-tag-transform.rb
我喜欢[parkr](http://stackoverflow.com/users/716249/parkr)的反应更好,但是这个也给了我新的想法,所以非常感谢! –
这太神奇了,太简单了,非常感谢! –
我试图在一个新的插件中使用它,但它似乎是我用['Cloudinary'转换器]生成的Liquid语法(https://github.com/nhoizey/nicolas-hoizey.com/blob/8f49a34dd444b000520aeb7731d0a8ca17415615/_plugins/ cloudinary.rb#L84-L107)之后未被解析。我应该明确地调用Kramdown吗? –
相关:http://stackoverflow.com/questions/38126629/how-is-the-priority-flag-in-jekyll-plugins-supposed-to-work –