jekyll在循环中分配concat?

时间:2017-02-26 22:47:31

标签: concatenation jekyll concat

我想根据传递过滤器的页数组织一个页面。

我试图将truthy页面附加到集合中,但它不起作用。

{% assign homepage_posts = [] %}
{% for my_page in site.pages %}
  {% if my_page.homepage %}
    {% assign homepage_posts = homepage_posts | concat: [my_page] %}
  {% endif %}
{% endfor %}

<h1>size{{homepage_posts.size}}</h1>
<h1>{{homepage_posts}}</h1>

这不起作用。 concat只能用于字符串吗?

2 个答案:

答案 0 :(得分:2)

Jekyll很快会使用Liquid 4。但是,目前还没有concat

在您的情况下,您可以:

创建一个空数组(括号表示法在液体中不起作用):{% assign homepage_posts = "" | split:"/" %}

{{ homepage_posts | inspect }} - &gt;输出:[]

并推送其中的元素:

{% for my_page in site.pages %}
  {% if my_page.homepage %}
    {% assign homepage_posts = homepage_posts | push: mypage %}
  {% endif %}
{% endfor %}

{{ homepage_posts | inspect }}

答案 1 :(得分:0)

concat过滤器仅适用于数组,并且在升级到Liquid 4时可在Jekyll中使用。*:

  

的concat

     

将数组与另一个数组连接(组合)。所结果的   array包含原始数组的所有元素。 concat会   除非你,否则不要从连接数组中删除重复的条目   也使用uniq过滤器。

要过滤包含特定属性的网页(在本例中为homepage: true),您可以使用where过滤器。

有一个前面的页面:

---
homepage: true
---

然后,您可以拥有homepage: true属性的网页,如:

{% assign homepages = site.pages | where:"homepage","true" %}