我想在jekyll博客中显示最近10篇帖子,假设他们的show
属性为true
。
e.g。 YAML前面的内容可能看起来像这样
---
title: "SO question"
categories: question
show: false
---
在我的index.html
文件中,我目前有以下
{% for post in site.posts limit:10 %}
{% if post.show %}
<!-- display post -->
{% endif %}
{% endfor %}
但如果过去10的一个帖子的show
属性为false
,那么页面上只会显示9个帖子。
Jinja2支持for-if
语法,如下所示:http://jinja.pocoo.org/docs/dev/templates/#for。这可以解决我的问题,但不幸的是液体不支持。
使用液体如何调整帖子属性并确保始终显示10个帖子?
答案 0 :(得分:8)
您必须首先制作包含show
变量设置为true
的帖子的数组。
{% assign publishedPosts = site.posts | where: 'show', 'true' %}
然后你可以做一个
{% for p in publishedPosts limit:10 %}
答案 1 :(得分:1)
只是指出@matrixanonaly 的答案,如果不能使用“where”过滤器,它可以很好地与一个小 tweek 一起使用。我还不能发表评论,但我想我会修复它,这样它就可以帮助我。
{% assign count = 0 %}
{% for post in site.posts limit:10 %}
{% if post.show %}
{% if count < 10 %}
<!-- display post -->
{% assign count = count | plus: 1 %}
{% endif %}
{% endif %}
{% endfor %}
我需要这个,因为我在标签中使用了 contains。由于某种原因,增量不起作用。
答案 2 :(得分:0)
在assign
值设置为show
的帖子中,尝试将true
用于计数器变量。这是一些简单的方法之一。
{% assign count = 0 %}
{% for post in site.posts limit:10 %}
{% if post.show %}
{% if count < 10 %}
<!-- display post -->
{% increment count %}
{% endif %}
{% endif %}
{% endfor %}
应该工作,但我现在没有Jekyll安装来检查,或者如果增量不起作用,请使用{% assign count = count + 1 %}
。
Shopify Liquid syntax manual is helpful。
或者, 我有一种感觉你只想设置一个帖子是否应该发布,在这种情况下你可以使用内置的在 published
变量中。只需在frontmatter中执行published : true
或published : false
即可。阅读有关预定义变量here的更多信息。