如何在'jekyll build'的生命周期中存储哈希?

时间:2013-08-08 20:32:00

标签: jekyll liquid jekyll-extensions

我正在编写一个自定义Liquid标签作为Jekyll插件,我需要保留一些值,直到下一次调用当前运行的jekyll build命令中的标签。

我是否可以使用一些全局位置/命名空间来存储和检索值(最好是键值对/哈希)?

1 个答案:

答案 0 :(得分:0)

您可以添加一个带有类变量的模块来存储持久值,然后在您的标记类中包含该模块。您需要适当的访问器,具体取决于变量的类型和您可能想要进行的分配。这是一个简单的例子,它实现了一个简单的计数器,可以跟踪DataToKeep::my_val中标记被调用的次数:

module DataToKeep
  @@my_val = 0

  def my_val
    @@my_val
  end

  def my_val= val
    @@my_val = val
  end
end

module Jekyll
  class TagWithKeptData < Liquid::Tag
    include DataToKeep

    def render(context)
      self.my_val = self.my_val + 1
      return "<p>Times called: #{self.my_val}</p>"
    end
  end
end

Liquid::Template.register_tag('counter', Jekyll::TagWithKeptData)