web-dev-qa-db-ja.com

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>

これですべての投稿が表示されます。最新の投稿のみを表示します。

47
kabir

これは、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 %}
105
Daniel Baird

ループを作成するのではなく、変数を割り当てて先に進みます...

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

(2018年編集)あなたがこれを行った後に誰かが他の投稿を反復する方法を知りたかったので:

{% for post in site.posts offset:1 %}
  ... Show the next posts ...
{% endfor %}
16
Merovex

タイトルにあるように「ホームページに最新の投稿だけをjekyllで表示するにはどうすればよいですか?」 「テンプレートに最新の投稿のみを表示する方法」ではなく、次の方法が役立ちます。

デフォルトの最小テーマを使用した新しいJekyllバージョン3.7.3がインストールされている場合、ファイル_layouts/home.html次のコンテンツ:

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

Jekyll 3.7.3に、ホームページとして投稿テンプレートを使用して最初の投稿を表示させます。

4
Douglas Lovell

次のように、site.postsの最初のインデックスから最新の投稿にアクセスすることもできます。

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

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

site.posts.firstは他の誰かが述べたように機能しますが、上記の例は、最初のインデックスだけでなく他のインデックスにアクセスするための一貫した方法も提供します(そうする必要はありません)。代わりにこの答えをコメントとして追加するのに十分な評判がある:)

0
Original Poster