2013-12-21 69 views
3

我希望我的最外層Liquid模板文件僅在頁面需要時引用JavaScript文件。我創建了一個頁面變量,page.slideshow,控制這樣的:覆蓋YAML液體的前端變量

default.html中:

{% if page.slideshow %} 
    <script type="text/javascript" src="/js/slideshow.js"></script> 
{% endif %} 

現在我有一個模板,「繼承」自default.html中,這使得網頁在其指定YAML正面圖像列表(page.images)。只有當這個列表有多個元素時,我才希望slideshow.js包含在頁面中。

我在此嘗試看起來像:

other.html

--- 
layout: default 
--- 
{% assign imagecount = page.images | size %} 
{% if imagecount > 1 %} 
    {% assign page.slideshow = true %} 
{% endif %} 

然而,這似乎並沒有影響到default.html中的渲染,因爲腳本標記不包含的最後一頁。

作爲一種解決方法,我可以修改列出多個圖像的每個頁面的前景,以明確設置slideshow: Yes,或更改default.html以檢查page.slideshow or (page.images | size) > 0,但我更願意將其更接近我上面嘗試的結構。

+0

已經解決了這個問題嗎? –

回答

0

我玩過一玩,你不能按照你的建議真正做到。看起來頁面變量一旦設置就不能修改。您可以使用Jekyll插件進行設置,但這是另一回事。

我發現最乾淨的方法是將所有邏輯放在主要的最外層模板中。

{% assign imageCount = page.images | size %} 
{% if page.slideshow or imageCount > 1 %} 
    {{ page.images | size }} 
    <script src="/js/slideshow.js"></script> 
{% endif %}