在液体分配中同步两个集合

时间:2016-02-26 11:20:22

标签: jekyll liquid

基于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' %}

但这不起作用。

有没有办法连接两个集合?或者,要访问站点中的所有对象而不考虑类型?

1 个答案:

答案 0 :(得分:1)

现在(Jekyll 3.1.x我不认为你能做到。

我找到了:https://github.com/Shopify/liquid/issues/427

这似乎表明它即将到来 - 这是一个看起来像是在Liquid中解决的问题,但是Jekyll使用的更高版本的液体。

我也发现了这个:https://github.com/mpc-hc/mpc-hc.org/commit/624a4bf63710ce00d98c80f8b3655a71c0468747#diff-23a9de36055c1aa13a62d73b9c318ebd

帕克说这是一个潜在的4.x功能。

看起来如果您有多个集合可以使用site.documents来执行此操作,我做了一点测试,虽然听起来像site.documents是网站中的所有文档,但它看起来像是真的是馆藏中的所有文档。

有一个push过滤器可能用于将一个阵列推入另一个阵列,但我不认为它真的可以将两个阵列组合在一起。

与此同时,我认为只需复制你的代码,一个用于页面,一个用于集合就可以了。如果我理解正确,只有匹配才会找到您的ID,以便其他人找不到其他内容。