Как передать переменную в пользовательский тег в Liquid? - PullRequest
13 голосов
/ 05 октября 2011

Я написал собственный тег в жидкости и хотел бы передать ему переменную.Жидкие теги превратят любой параметр в строку.

Например:

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

Где страница - это переменная.

Есть ли способ получить жидкость для обработки страницыкак переменная, а не строка?

Заранее спасибо!

Ответы [ 3 ]

13 голосов
/ 05 октября 2011

Если вы используете Jekyll специально, вы можете получить доступ к переменной страницы следующим образом:

def render(context)
  page_url = context.environments.first["page"]["url"]
6 голосов
/ 07 января 2012

У меня была похожая проблема.Я решил это, создав собственный метод поиска:

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 
2 голосов
/ 12 февраля 2013

Чтобы ответить на общий вопрос, а не на часть, конкретно касающуюся переменной страницы, вы также можете снова передать содержимое тега через анализатор Liquid:

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

def render(context)
  content = Liquid::Template.parse(@markup).render context
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...