Jekyll frontmatter 中的 Liquid 变量......并在 Jekyll 插件中使用它

Liquid variable in Jekyll frontmatter ... and use it in a Jekyll plugin

我非常喜欢通过 jekyll-liquify 插件在 Jekyll frontmatter 中使用 Liquid 变量的可能性:

module LiquidFilter
  def liquify(input)
    Liquid::Template.parse(input).render(@context)
  end
end

Liquid::Template.register_filter(LiquidFilter)

效果很好,但我想更进一步,使用插件 jekyll-image-size 从 frontmatter

中作为液体变量给出的图像中读取图像大小
image: '{{ page.myimage }}'

...所以我需要在 jekyll-image-size 插件中实现上面的解析器

...
class ImageSizeTag < Liquid::Tag

  def initialize(tagName, content, tokens)
    super
    @content = content.strip
    @tokens = tokens
  end
...

我不知道 ruby 所以我不知道该怎么做,但我想应该不会太复杂。感谢您的帮助!

非常简单的解决方案,使用分配或捕获以及钩子或 jekyll 的液化插件:

{% assign image = page.myimage | liquify %}
{% imagesize image:size %}

{% capture image %}{{ page.myimage | liquify }}{% endcapture %}
{% imagesize image:size %}

...如果您想在 frontmatter 中使用一个变量来包含来自另一个变量的图像并使用 jekyll-image-size 插件,则需要...可能对其他插件也有用。

https://github.com/gemfarmer/jekyll-liquify

http://acegik.net/blog/ruby/jekyll/plugins/howto-nest-liquid-template-variables-inside-yaml-front-matter-block.html