【问题标题】:How can I store a hash for the lifetime of a 'jekyll build'?如何在“jekyll build”的生命周期内存储哈希?
【发布时间】:2013-08-08 20:31:59
【问题描述】:

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

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

【问题讨论】:

    标签: jekyll liquid jekyll-extensions


    【解决方案1】:

    您可以添加一个带有类变量的模块来存储持久值,然后将该模块包含在您的标记类中。您将需要适当的访问器,具体取决于变量的类型和您可能想要进行的分配。下面是一个简单的示例,实现了一个简单的计数器,用于跟踪标签在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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-24
      • 2012-08-27
      • 1970-01-01
      • 2013-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-27
      相关资源
      最近更新 更多