在 liquid 任务中连接两个集合
Conctenating two collections in a liquid assignment
基于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' %}
但这不起作用。
有没有办法连接两个集合?或者,无论类型如何,都可以访问站点中的所有对象?
现在(Jekyll 3.1.x我认为你做不到。
我发现:https://github.com/Shopify/liquid/issues/427
这似乎表明它即将到来 - 这个问题看起来已在 Liquid 中解决,但 Jekyll 使用的是更高版本的 liquid。
parker 说这是一个潜在的 4.x 功能。
看起来如果您有多个集合,您可以使用 site.documents
来执行此操作,我做了一些测试,虽然听起来 site.documents 是站点中的所有文档,但它看起来它真的是集合中的所有文档。
有一个 push
过滤器,也许您可以使用它来将一个数组推入另一个数组,但我不认为它真的可以将 2 个数组加在一起。
与此同时,我认为只需复制您的代码,一个用于页面,一个用于集合就可以了。如果我理解正确的话,你的 id 只有在匹配时才会被发现,这样一个人会找到另一个人找不到的东西。
基于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' %}
但这不起作用。
有没有办法连接两个集合?或者,无论类型如何,都可以访问站点中的所有对象?
现在(Jekyll 3.1.x我认为你做不到。
我发现:https://github.com/Shopify/liquid/issues/427
这似乎表明它即将到来 - 这个问题看起来已在 Liquid 中解决,但 Jekyll 使用的是更高版本的 liquid。
parker 说这是一个潜在的 4.x 功能。
看起来如果您有多个集合,您可以使用 site.documents
来执行此操作,我做了一些测试,虽然听起来 site.documents 是站点中的所有文档,但它看起来它真的是集合中的所有文档。
有一个 push
过滤器,也许您可以使用它来将一个数组推入另一个数组,但我不认为它真的可以将 2 个数组加在一起。
与此同时,我认为只需复制您的代码,一个用于页面,一个用于集合就可以了。如果我理解正确的话,你的 id 只有在匹配时才会被发现,这样一个人会找到另一个人找不到的东西。