2010-06-07 33 views
2

我正在使用Jekyll創建新的博客。它使用下面的Liquid液體模板 - 按名稱訪問成員

化身定義了某些 「變量」:sitecontentpagepostpaginator。這些「變數」有幾個「成員」。例如,post.date將返回帖子的日期,而post.url將返回其網址。

我的問題是:我可以使用另一個變量作爲成員名稱訪問變量的成員嗎?

參見下面的示例:

{% if my_condition %} 
    {% assign name = 'date' %} 
{% else %} 
    {% assign name = 'url' %} 
{% endif %} 

我有一個名爲name可變其是'date''url'

如何在紅寶石中製作post[name]的液體等效物?

我發現的唯一方法是使用for循環遍歷所有對(鍵值)post。謹防!這是相當可怕的:

{% for property in post %} 
    {% if property[0] == name %} 
    {{ property[1] }} 
    {% endif %} 
{% endfor %} 

唉!我希望有更好的辦法。

謝謝。

回答

1

我不知道我在想什麼。

post[name]是一個完全有效的液體建築。因此,對於-如果上面的代碼可以用這個代替:

{{ post[name] }} 

我認爲我想這一點,但顯然我沒有。 D'哦!

液體可以承認更有愛好的結構;下面一個語法正確,並且將返回,如果postelementcategories等正確定義的預期值:

{{ post[element.id].categories[1].name }} 

我與液體大爲驚訝。將明確繼續調查。

0

其實,這並不適合我。我嘗試了很多不同的組合,什麼終於研究出了

<!-- object myObj.test has the string value "this is a test" --> 
{% assign x = 'test' %} 
{{ myObj.[x] }} 

輸出: 這是一個測試