【发布时间】:2013-08-08 20:31:59
【问题描述】:
我正在编写一个自定义 Liquid 标签作为 Jekyll 插件,我需要为它保留一些值直到在 jekyll build 命令的当前运行中下一次调用标签。
是否有一些全局位置/命名空间可用于存储和检索值(最好是键值对/哈希)?
【问题讨论】:
标签: jekyll liquid jekyll-extensions
我正在编写一个自定义 Liquid 标签作为 Jekyll 插件,我需要为它保留一些值直到在 jekyll build 命令的当前运行中下一次调用标签。
是否有一些全局位置/命名空间可用于存储和检索值(最好是键值对/哈希)?
【问题讨论】:
标签: jekyll liquid jekyll-extensions
您可以添加一个带有类变量的模块来存储持久值,然后将该模块包含在您的标记类中。您将需要适当的访问器,具体取决于变量的类型和您可能想要进行的分配。下面是一个简单的示例,实现了一个简单的计数器,用于跟踪标签在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)
【讨论】: