Как я могу показать только самую последнюю запись на моей домашней странице с помощью 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>

Это показывает все мои сообщения, я просто хочу показать самые последние.


person kabir    schedule 26.07.2013    source источник


Ответы (4)


Этого можно добиться с помощью limit:

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

Вы также можете использовать limit и offset вместе, чтобы «отметить» свой последний пост:

<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 %}
person Daniel Baird    schedule 26.07.2013
comment
Это действительно помогло мне, спасибо. Однако в первом примере мне пришлось указать значение для смещения, иначе первое сообщение не появилось бы. Нравится: {% для публикации в site.posts offset:1 limit:1 %}. Возможно, это изменилось в последних версиях Jekyll. - person Christian; 30.12.2013
comment
Кристиан, вы итерируете через paginator или сайт, чтобы получить свои сообщения? Может быть, пагинатор индексируется 1 или что-то в этом роде. - person Daniel Baird; 07.01.2014
comment
Нет простите. Я точно использовал: {% for post in site.posts limit:1 %} - person Christian; 07.01.2014
comment
Тогда должно быть изменение версии. На самом деле это имеет смысл, учитывая большое обновление Jekyll в 2013 году. Я покопаюсь и обновлю этот ответ. - person Daniel Baird; 09.01.2014
comment
Примечание: из соображений доступности вам нужен только один тег <h1> на страницу. Потрясающий ответ, спасибо! Очень полезно. - person Freedom_Ben; 30.06.2016
comment
@Freedom_Ben Возможно, используйте теги разделения, а затем используйте H2 в качестве подтемы более высокого уровня схемы. - person Denver Prophit Jr.; 22.05.2019

Вместо того, чтобы создавать цикл, просто назначьте переменную и двигайтесь дальше...

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

(Редактировать 2018) Поскольку кто-то хотел знать, как повторять другие сообщения после того, как вы сделали это:

{% for post in site.posts offset:1 %}
  ... Show the next posts ...
{% endfor %}
person Merovex    schedule 15.10.2016
comment
Это работает, если вы хотите показать только одно сообщение, но это мешает возможности перечислить остальные сообщения на той же странице. - person Jeremy_inPDX; 19.01.2018
comment
Заданный вопрос заключался в том, что я хочу показать только один пост, и мой ответ отвечает на него. Если позже вы захотите показать другие посты, создайте цикл site.posts со смещением на единицу. Это позволит вам начать с поста №2. Другой ответ показывает смещение, если вы не знакомы. - person Merovex; 20.01.2018

Если вы пришли сюда из-за вопроса, как указано в заголовке: «Как я могу показать только самую последнюю публикацию на моей домашней странице с помощью jekyll?» а не «как мне показать только последний пост в моем шаблоне», может быть полезно следующее.

Учитывая новую установку Jekyll версии 3.7.3 с минимальной темой по умолчанию, создайте файл _layouts/home.html со следующим содержимым:

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

Заставляет Jekyll 3.7.3 отображать первое сообщение с использованием шаблона сообщения в качестве домашней страницы.

person Douglas Lovell    schedule 10.03.2018
comment
Это должно быть layout: null, а не none. - person Soviut; 02.09.2018
comment
Это лучшее решение для меня, потому что оно, похоже, сохраняет такие вещи, как page.url и другие переменные, которые теряются в других решениях. Это означает, что вы можете использовать ту же страницу макета, что и другие ваши страницы сообщений. - person zola25; 30.04.2021

Похоже, вы также можете просто получить доступ к последнему сообщению через первый индекс site.posts, как в:

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

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

Хотя site.posts.first тоже работает, как упоминалось кем-то другим, приведенный выше пример также обеспечивает согласованный способ доступа к другим индексам, помимо первого (не то, чтобы вам это когда-либо понадобится). Кроме того, у меня не хватило репутации, чтобы вместо этого добавить этот ответ в качестве комментария :)

person Matt Borja    schedule 04.02.2019