60
<ul class="entries">
  {% for post in paginator.posts %}
  <li>
    <a href="{{ post.url }}">
    <h3>{{ post.title }}</h3>
    <p class="blogdate">{{ post.date | date: "%d %B %Y" }}</p>
    <div>{{ post.content |truncatehtml | truncatewords: 60 }}</div>
    </a>
  </li>
  {% endfor %}
</ul>

这显示了我所有的帖子,我只想显示最新的。

4

4 回答 4

122

这可以通过使用来完成limit

{% for post in site.posts limit:1 %}
... Show the post ...
{% endfor %}

您还可以使用limitoffset一起“突出”您最近的帖子:

<h1>Latest Post</h1>
{% for post in site.posts limit:1 %}
... Show the first post all big ...
{% endfor %}
<h1>Recent Posts</h1>
{% for post in site.posts offset:1 limit:2 %}
... Show the next two posts ...
{% endfor %}
于 2013-07-26T23:13:36.360 回答
17

而不是创建一个循环,只需分配变量并继续......

{% assign post = site.posts.first %}

(编辑 2018)因为有人想知道在您完成此操作后如何迭代其他帖子:

{% for post in site.posts offset:1 %}
  ... Show the next posts ...
{% endfor %}
于 2016-10-15T20:48:40.783 回答
8

如果您来这里是为了标题中所述的问题,“如何使用 jekyll 在我的主页上显示最新的帖子?” 而不是“如何在我的模板中仅显示最新帖子”,以下内容可能会有所帮助。

给定一个带有默认最小主题的全新 Jekyll 版本 3.7.3 安装,创建一个包含_layouts/home.html以下内容的文件:

---
layout: none
---
{{ site.posts.first }}

使 Jekyll 3.7.3 显示第一个帖子,使用帖子模板作为主页。

于 2018-03-10T18:54:48.247 回答
2

看来您也可以通过以下第一个索引访问最新帖子site.posts

{%- assign latest_post = site.posts[0] -%}

Latest post: <a href="{{ latest_post.url }}">{{ latest_post.title }}</a>

尽管site.posts.first其他人也提到过,但上面的示例还提供了一种一致的方式来访问除第一个索引之外的其他索引(不是您需要的)。另外,我没有足够的声誉来将此答案添加为评论:)

于 2019-02-04T06:28:15.687 回答