有条件地限制for循环的结果

Ale*_*lex 0 liquid jekyll

我想在jekyll博客中显示最后10个帖子,假设他们的show属性是true.

例如,YAML前端可能看起来像这样

---
title: "SO question"
categories: question
show: false
---
Run Code Online (Sandbox Code Playgroud)

在我的index.html文件中,我目前有以下内容

{% for post in site.posts limit:10 %} 
  {% if post.show %}
    <!-- display post -->
  {% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

但如果最后10个帖子中的一个帖子show属性为false,则页面上只会显示9个帖子.

Jinja2支持for-if如下所示的语法:http://jinja.pocoo.org/docs/dev/templates/#for.这可以解决我的问题,但不幸的是液体不支持.

使用液体如何调整post属性并确保始终显示10个帖子?

Dav*_*uel 8

您必须首先创建一个包含show变量设置为的帖子的数组true.

{% assign publishedPosts = site.posts | where: 'show', 'true' %}
Run Code Online (Sandbox Code Playgroud)

然后你可以做一个

{% for p in publishedPosts limit:10 %}
Run Code Online (Sandbox Code Playgroud)