如何根据Jekyll和Liquid的帖子数列出帖子?

时间:2016-08-16 08:24:27

标签: list post numbers jekyll liquid

我试图解决这个问题,并且无法得出一个圆满的结论。

基本上,我想要做的是检测我的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甚至:,但我仍然得到相同的结果。

我不知道从哪里开始,所以非常感谢任何帮助。提前谢谢。

1 个答案:

答案 0 :(得分:1)

您不应混合测试和过滤器。请尝试以下方法:

{% assign post_count=site.posts | size %}
{% if post_count == 1 %}
...

请注意,对于数组,您可以使用size属性而不是过滤器:

{% if site.posts.size == 1 %}
...