Для циклов в жидкости: использование в обратном порядке в сочетании с пределом: 1 - программирование
Подтвердить что ты не робот

Для циклов в жидкости: использование в обратном порядке в сочетании с пределом: 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, но прогресс заканчивается там.

Спасибо за помощь, и я был бы рад предоставить более подробную информацию, если этого недостаточно.

4b9b3361

Ответ 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) там и только тогда цикл с лимитом.