基于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 %}
这很有效,但除了&#34; site.pages&#34;之外,我想在属于其他集合的页面中做同样的事情。例如,我有一个名为&#34; site.TOPICS&#34;的集合。我想用以下内容替换第一行:
{% assign pages=site.pages + site.TOPICS | where:"id", page.id | sort: 'path' %}
或:
{% assign pages=site.EVERYTHING | where:"id", page.id | sort: 'path' %}
但这不起作用。
有没有办法连接两个集合?或者,要访问站点中的所有对象而不考虑类型?
答案 0 :(得分:1)
现在(Jekyll 3.1.x我不认为你能做到。
我找到了:https://github.com/Shopify/liquid/issues/427
这似乎表明它即将到来 - 这是一个看起来像是在Liquid中解决的问题,但是Jekyll使用的更高版本的液体。
帕克说这是一个潜在的4.x功能。
看起来如果您有多个集合可以使用site.documents
来执行此操作,我做了一点测试,虽然听起来像site.documents是网站中的所有文档,但它看起来像是真的是馆藏中的所有文档。
有一个push
过滤器可能用于将一个阵列推入另一个阵列,但我不认为它真的可以将两个阵列组合在一起。
与此同时,我认为只需复制你的代码,一个用于页面,一个用于集合就可以了。如果我理解正确,只有匹配才会找到您的ID,以便其他人找不到其他内容。