Jekyll 在液体中过滤或分组收集

Jekyll 在液体中过滤或分组收集,jekyll,liquid,Jekyll,Liquid,对于一个简单的个人Jekyll博客,我想通过lang(语言)上的post属性对我的站点进行分组。这是“en”、“nl”或“nil” 然后我想呈现两个帖子列表。目前我有: <section lang="nl"> <h2>Nederlandse Artikelen</h2> <ul class="posts"> {% for post in site.posts limit:50 %} {% if post.lang == "nl" %}

对于一个简单的个人Jekyll博客,我想通过lang(语言)上的
post
属性对我的
站点进行分组。这是“en”、“nl”或“nil”

然后我想呈现两个帖子列表。目前我有:

<section lang="nl">
<h2>Nederlandse Artikelen</h2>
<ul class="posts">
  {% for post in site.posts limit:50 %}
    {% if post.lang == "nl" %}
      {% include li_for_post_with_date.yml %}
    {% endif %}
  {% endfor %}
</ul>
<a href="archief.html">Archief »</a>
</section>
<section lang="en">
<h2>English Articles</h2>
<ul class="posts">
  {% for post in site.posts limit:50 %}
    {% if post.lang == nil or post.lang == "en" %}
      <li><span>{{ post.date | date_to_string }}</span> &raquo; <a href="{{ BASE_PATH }}{{ post.url }}">{{ post.title }}</a></li>
    {% endif %}
  {% endfor %}
</ul>

正如所说,丑陋,所以如果有更清洁的解决方案,请添加一个解决方案

我认为,如果不制作插件或自定义过滤器,您不可能创建过滤后的收集,但您可以计算该组已收集的帖子数量,而不是使用limit

{% for post in site.posts %}
    {% if counter < 25 and post.lang == nil or post.lang == "en" %}
        {% capture counter %}{{ counter | plus:1 }}{% endcapture %} 
        <li></li>
    {% endif %}
{% endfor %}
{%for site.posts%}
{%如果计数器<25且post.lang==nil或post.lang==“en”%}
{%capture counter%}{{counter | plus:1}{%endcapture%}
  • {%endif%} {%endfor%}

    代码未经测试,但类似的东西应该可以工作。

    不幸的是,液体过滤器在
    循环中无法工作。然而,它们在变量赋值中确实起作用

    {% assign posts_by_lang = site.posts | group_by: "lang" %}
    {% for lang in posts_by_lang %}
      {{ lang.name }}
      {% for post in lang.items limit: 25 %}
        {{ post.title }}
      {% endfor %}
    {% endfor %}
    

    名称
    项目
    属性由
    group\u by
    生成,其余的则照常进行。

    有趣的方向。但是,捕获会将
    计数器
    转换为字符串,在第一次迭代后,它无法与25进行比较:/。最近的“liquid”版本有“increment”,但不是在Github上运行的版本。请尝试一些变体-与字符串“25”相比可能有效,或者如果plus无法添加到字符串中,您可以使用字符串的长度而不是其值作为计数器。是的,我正在尝试字符串长度。当然,
    {%increment somevar%}
    不同于其他任何
    {%%}
    液体表达式,它是一个输出语句,因此无论如何都必须捕获(并字符串化)它。Liquid确实是一个野蛮的、设计拙劣的模板系统。即使构造一个简单有效的整数循环计数器,也要花费数小时的时间。
    {% assign posts_by_lang = site.posts | group_by: "lang" %}
    {% for lang in posts_by_lang %}
      {{ lang.name }}
      {% for post in lang.items limit: 25 %}
        {{ post.title }}
      {% endfor %}
    {% endfor %}