2016-02-26 64 views
0

基於this tutorial,我構建了一個多語言的Jekyll站點。在每一個頁面,下面的代碼鏈接到同一頁面的不同語言版本:在液體分配中合併兩個集合

{% assign pages=site.pages | where:"id", page.id | sort: 'path' %} 
    {% for p in pages %} 
    <a href="{{ p.url | prepend: site.baseurl }}" class="{{ p.lang }}"><img src="{{ site.baseurl }}/images/{{ p.lang }}.png" alt="This page in {{ p.lang }}"/></a> 
    {% endfor %} 

這個效果很好,但我希望做同樣的屬於其他藏品除了「site.pages」頁面。例如,我有一個名爲「site.TOPICS」的集合。我想的東西,如更換第一行:

{% assign pages=site.pages + site.TOPICS | where:"id", page.id | sort: 'path' %} 

或:

{% assign pages=site.EVERYTHING | where:"id", page.id | sort: 'path' %} 

但是,這是行不通的。

有沒有辦法連接兩個集合?或者,也可以訪問站點中的所有對象而不考慮類型? 。

回答

1

眼下(傑奇3.1.X我不認爲你可以做到這一點

我發現:https://github.com/Shopify/liquid/issues/427

這似乎表明它是未來 - 這是一個看起來是一個問題解決了液體,但更高版本的液體哲基爾使用

我也發現了這一點:。https://github.com/mpc-hc/mpc-hc.org/commit/624a4bf63710ce00d98c80f8b3655a71c0468747#diff-23a9de36055c1aa13a62d73b9c318ebd

其中帕克說,這是一個潛在的4.x的功能

看起來如果你有多個集合可以使用site.documents來做到這一點,我做了一個小測試,雖然聽起來像site.documents是網站中的所有文檔,但它看起來好像是集合中的所有文檔。

有一個push過濾器,也許你可以用來推動一個數組到另一個,但我不認爲這是真的使2個數組一起。

在此期間,我認爲只是重複您的代碼,並有一個頁面和一個集合將工作。如果我理解正確,你的id只有在匹配的時候纔會被發現,以便找到其他人不會的東西。

+0

使用「site.pages」和「site.documents」很好。有重複,但只有兩次。謝謝! –

+0

我認爲還有site.collections。它確實聽起來像site.documents應該是所有文件,而不僅僅是集合。很高興你有它的工作! – Ron