How can I show just the most recent post on my home page with jekyll?
<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>
That shows all my posts, I just want to show the most recent.
Solution 1:
This can be accomplished through the use of limit
:
{% for post in site.posts limit:1 %}
... Show the post ...
{% endfor %}
You can also use limit
and offset
together to "feature" your most recent post:
<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 %}
Solution 2:
Rather than create a loop, just assign the variable and move on...
{% assign post = site.posts.first %}
(Edit 2018) Since someone wanted to know how to iterate other posts after you've done this:
{% for post in site.posts offset:1 %}
... Show the next posts ...
{% endfor %}
Solution 3:
If you got here for the question as stated in the title, "How can I show just the most recent post on my home page with jekyll?" and not "how do I show only the latest post in my template," the following might be helpful.
Given a brand new Jekyll version 3.7.3 install with the default minima theme, create a file, _layouts/home.html
with the following content:
---
layout: none
---
{{ site.posts.first }}
Causes Jekyll 3.7.3 to show the first post, using the post template, as the home page.