Jekyll 在液体中过滤或分组收集
对于一个简单的个人Jekyll博客,我想通过lang(语言)上的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" %}
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> » <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 %}