首页 文章

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

提问于
浏览
0

我正在编写一个自定义Liquid标签作为Jekyll插件,我需要保留一些值 until the next invocation of the tag within jekyll build 命令的当前运行 .

Is there some global location/namespace that I could use to store and retrieve values (preferably key-value pairs / a hash)?

1 回答

  • 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)
    

相关问题