我已經寫了一個自定義標籤在液體中,我想通過一個變量。液體標籤將把任何參數變成一個字符串。如何將變量傳遞給Liquid中的自定義標籤?
例如:
{% nav page /some/url.html %}
如果頁面是一個變量。
有沒有辦法讓Liquid將頁面當作變量而不是字符串?
在此先感謝!
我已經寫了一個自定義標籤在液體中,我想通過一個變量。液體標籤將把任何參數變成一個字符串。如何將變量傳遞給Liquid中的自定義標籤?
例如:
{% nav page /some/url.html %}
如果頁面是一個變量。
有沒有辦法讓Liquid將頁面當作變量而不是字符串?
在此先感謝!
如果你是專門使用化身,你可以訪問該網頁的變量是這樣的:
def render(context)
page_url = context.environments.first["page"]["url"]
好的,我可以通過這種方式訪問帖子的液體散列。有沒有辦法從'context'訪問'Post'對象? –
這真的應該進入Jekyll文檔! – Sebi
我也有類似的問題。我解決它通過創建一個自定義的查找方法:
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
要回答的一般問題,而不是部分專門關於頁面變量,可以再次通過Liquid解析器傳遞標籤的內容:
def initialize(tag_name, markup, tokens)
@markup = markup
super
end
def render(context)
content = Liquid::Template.parse(@markup).render context
end
我應該提到這個問題是關於Jekyll,但適用於任何Liquid自定義標籤。 –
參見:http://stackoverflow.com/questions/7919644/using-liquid-variables-inside-of-a-liquid-tag-call http://stackoverflow.com/questions/7259385/resolve-liquid-variable-內部液體標籤 – nickf