我试图解决这个问题,并且无法得出一个圆满的结论。
基本上,我想要做的是检测我的Jekyll网站上的帖子数量,并根据该数字列出帖子。例如,如果只有一个帖子,我想列出该帖子,全长和所有格式。如果有两个帖子,我想将它们列为片段,并且没有HTML格式。如果有三个,就像两个帖子一样。如果有三个以上,我想和两个和三个帖子一样,但是有一个“查看所有帖子”链接,因为我希望在主页上列出最多三个,但不希望“查看全部”帖子“如果帖子不超过三个就链接。
在列出我当前的代码之前,我想说明我已尝试使用paginator.total_posts
(我在我的网站上使用jekyll-paginate)并且没有列出任何内容。
此处是我的代码:
{% if site.posts | size == 1 %}
{% for post in site.posts %}
{{ first post coding, full-length }}
{% endfor %}
{% endif %}
{% if site.posts | size == 2 %}
{% for post in site.posts limit:1 %}
{{ first post coding, snippet }}
{% endfor %}
{% for post in site.posts limit:1 offset:1 %}
{{ second post coding, snippet }}
{% endfor %}
{% endif %}
{% if site.posts | size == 3 %}
{% for post in site.posts limit:1 %}
{{ first post coding, snippet }}
{% endfor %}
{% for post in site.posts limit:1 offset:1 %}
{{ second post coding, snippet }}
{% endfor %}
{% for post in site.posts limit:1 offset:2 %}
{{ third post coding, snippet }}
{% endfor %}
{% endif %}
{% if site.posts | size > 3 %}
{% for post in site.posts limit:1 %}
{{ first post coding, snippet }}
{% endfor %}
{% for post in site.posts limit:1 offset:1 %}
{{ second post coding, snippet }}
{% endfor %}
{% for post in site.posts limit:1 offset:2 %}
{{ third post coding, snippet }}
{% endfor %}
{{ "view all posts" link coding }}
{% endif %}
问题是我的页面输出的是所有{% if %}
语句;它不是只选择一个,{{ site.posts | size }}
输出的数字。这让我感到困惑,因为当我将{{ site.posts | size }}
放入我的代码中时,它会在每种情况下列出正确的数字。
我尝试将==
更改为contains
甚至:
,但我仍然得到相同的结果。
我不知道从哪里开始,所以非常感谢任何帮助。提前谢谢。
答案 0 :(得分:1)
您不应混合测试和过滤器。请尝试以下方法:
{% assign post_count=site.posts | size %}
{% if post_count == 1 %}
...
请注意,对于数组,您可以使用size属性而不是过滤器:
{% if site.posts.size == 1 %}
...