如何将变量传递到Liquid中的自定义标记?

Set*_*add 13 liquid

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

例如:

{% nav page /some/url.html %}
Run Code Online (Sandbox Code Playgroud)

页面是变量.

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

提前致谢!

Set*_*add 13

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

def render(context)
  page_url = context.environments.first["page"]["url"]
Run Code Online (Sandbox Code Playgroud)


小智 6

我遇到了类似的问题.我通过创建自定义查找方法解决了它:

def look_up(context, name)
  lookup = context

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

  lookup
end
Run Code Online (Sandbox Code Playgroud)

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

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 
Run Code Online (Sandbox Code Playgroud)