Для циклов в жидкости: использование в обратном порядке в сочетании с пределом: 1
Я строю простой блог с помощью Jekyll, и я вытягиваю свои волосы, пытаясь понять эту проблему.
Индексная страница сайта должна содержать одну, самую последнюю статью со структурой, выглядящей как-то вроде ниже (pardon the mess):
{% for post in site.posts reversed limit:1 %}
<div class="post">
<div class="post-inner">
<h3 class="posttitle"><a href="{{ post.url }}">{{ post.title }}</a></h3>
<p class="postdate">{{ post.date | date: "%d %B %Y" }}</p>
{{ post.content }}
<a href="{{ post.url }}#disqus_thread" class="commentLink"></a>
</div>
</div>
{% endfor %}
Приведенный выше шаблон работает отлично, когда предел не является ограничительным (т.е. не существует или задан длиной массива). Похоже, что только когда предел фактически ограничивает результат, который цикл игнорирует.
Я попытался очистить кеш браузера, и это заставило его работать без ограничений: 1, но прогресс заканчивается там.
Спасибо за помощь, и я был бы рад предоставить более подробную информацию, если этого недостаточно.
Ответы
Ответ 1
Что на самом деле выводит вам Jekyll?
Из того, что я понимаю, обратный фильтр применяется последним. Поэтому позвольте предположить, что вы разместили первые 15 дней августа, и также сообщите, что вы делаете что-то вроде этого:
{% for post in site.posts limit:5 %}
{{ post.content }}
{% endfor %}
Вы публикуете массив, который будет упорядочен в следующем шаблоне
[15 августа, авг. 14, авг. 13, авг. 12, авг. 11]
И затем, если вы отмените его
{% for post in site.posts reversed limit:5 %}
{{ post.content }}
{% endfor %}
Вы публикуете массив, который будет упорядочен в следующем шаблоне
[11 августа, 12 августа, 13 августа, 14 августа, 15 августа]
При всем том, что я сказал, я немного озадачен тем, почему вы не используете
{% for post in site.posts limit:1 %}
Ответ 2
Взломайте пользовательскую отмененную сортировку по настраиваемому полю с ограничением:
{% assign items = site.items | sort: 'some_field' | reverse %}
{% for item in items limit:10 %}
<li><a href="{{ item.url }}">{{ item.title }}</a></li>
{% endfor %}
Важно назначить некоторые пользовательские переменные var, sort (и reverse) там и только тогда цикл с лимитом.