13

我在液体中编写了一个自定义标签,我想将一个变量传递给它。Liquid 标签会将任何参数转换为字符串。

例如:

{% nav page /some/url.html %}

其中 page 是一个变量。

有没有办法让 Liquid 将页面视为变量而不是字符串?

提前致谢!

4

3 回答 3

13

如果您专门使用 Jekyll,您可以通过以下方式访问 page 变量:

def render(context)
  page_url = context.environments.first["page"]["url"]
于 2011-10-05T19:38:41.767 回答
5

我有一个类似的问题。我通过创建自定义查找方法解决了这个问题:

def look_up(context, name)
  lookup = context

  name.split(".").each do |value|
    lookup = lookup[value]
  end

  lookup
end

要使用它,请创建如下内容:

def initialize(tag_name, markup, tokens)
  @markup = markup
  super
end

def render(context)
  output = super
  if @markup =~ /([\w]+(\.[\w]+)*)/i
    @myvalue = look_up(context, $1)
  end

  do_something_with(@myvalue)
end 
于 2012-01-07T16:56:25.487 回答
3

要回答一般问题而不是专门关于 page 变量的部分,您还可以再次通过 Liquid 解析器传递标签的内容:

def initialize(tag_name, markup, tokens)
  @markup = markup
  super
end

def render(context)
  content = Liquid::Template.parse(@markup).render context
end
于 2013-02-12T00:25:17.373 回答