2017-04-08 48 views
2

我想創建單獨的Jekyll包括可以引用相同的公共變量。這是一個簡化的場景。我可以從Jekyll內部修改全局Liquid變量嗎?

創建_include/setter.html用下面的液體代碼:

{% globalString | append: include.add | append: "," %} 

然後,我創建_include/getter.html用下面的液體代碼:

we have {{ globalString }} 

然後在我的網頁我把:

{% include setter.html add = "one" %} 
{% include setter.html add = "two" %} 
{% include getter.html %} 

我希望看到類似的結果作爲結果。當然globalString不存在,所以這是行不通的。我似乎無法在sitepage中創建可從包含中看到的新變量。現在我很難用capture來解決這個問題。有沒有更好的方式來通過數據包括在Jekyll?

回答

2

這可以設置全局變量調用包括並使其作爲參數之前:

_includes/setter.html

before: {{include.globalString}}<br> 
{% assign globalString = include.globalString | append: include.add | append: "," %} 
after: {{globalString}}<br> 

_includes/getter.htmlwe have {{ include.globalString }}

Then:

{% assign globalString = "" %} 
{% include setter.html add = "one" globalString=globalString%} 
{% include setter.html add = "two" globalString=globalString%} 
{% include getter.html globalString=globalString%} 

將輸出:

before: 
after: one, 
before: one, 
after: one,two, 
we have one,two, 

更新

它也可以不通過「全局」變量作爲參數,唯一的要求是調用包括之前定義它:

_includes/setter.html

before: {{globalString}}<br> 
{% assign globalString = globalString | append: include.add | append: "," %} 
after: {{globalString}}<br> 

_includes/getter.htmlwe have {{ globalString }}

{% assign globalString = "" %} 
{% include setter.html add = "one" %} 
{% include setter.html add = "two" %} 
{% include getter.html %} 
+0

哇,這是赫然計數器直觀。在setter中使用'globalString',看起來像一個局部變量。我不知道這會影響二傳手之外的價值。謝謝!超級有用! – EFC

+1

@EFC更新了答案,我發現沒有參數也能工作,代碼變得更乾淨。 – marcanuy

相關問題