Сравнение дат в жидкости
Я использую Liquid with Jekyll для публикации дат на моем веб-сайте группы (http://longislandsound.com.au)
Я хочу, чтобы автоматически скрывать старые даты, поэтому мне не нужно входить и удалять их снова. Я думаю, что лучший способ сделать это - сравнить дату публикации с текущей датой и отображать только сообщение, если дата будет в будущем, но я не могу понять, как это сделать.
Вот текущий код:
<ul id="dates">
{% for post in site.posts reversed %}
<a href="{{post.link}}">
<li>
<div class="date">
<span class="day">{{post.date | date: "%d"}}</span><br />
<span class="month">{{post.date | date: "%b"}}</span>
<span class="week">{{post.date | date: "%a"}}</span>
</div>
<div class="details">
<span class="venue">{{post.venue}}</span><br />
<span class="town">{{post.town}}</span>
</div>
</li>
</a>
{% endfor %}
</ul>
Я пробовал некоторые операторы if, но я не могу понять, как сравнить дату публикации с текущей датой.
Может ли кто-нибудь помочь?
Ответы
Ответ 1
На основе date-math-manipulation-in-liquid-template-filter и get-todays-date-in-jekyll-with-liquid-markup вы сможете использовать комбинацию {{'now'}}
или {{site.time}}
, а жесткий фильтр даты в формате unix | date: '%s'
{% capture nowunix %}{{'now' | date: '%s'}}{% endcapture %}
{% capture posttime %}{{post.date | date: '%s'}}{% endcapture %}
{% if posttime < nowunix %}
...show posts...
Захваченные числа могут действовать как строки, а не числа, и могут быть возвращены к номерам с использованием следующего взлома:
{% assign nowunix = nowunix | plus: 0 %}
Ответ 2
Хотя этот код работает:
{% capture nowunix %}{{'now' | date: '%s'}}{% endcapture %}
{% capture posttime %}{{post.date | date: '%s'}}{% endcapture %}
{% if posttime < nowunix %} ...show posts...
Он выполняется только во время сборки. Если вы хотите, чтобы ваш сайт действительно обновлялся автоматически, вы должны позволить javascript скрывать.
Начните с этой жидкости:
{% for item in site.events %}
<div future-date="{{ item.date | date: '%Y%m%d' }}">...</div>
{% endfor %}
И добавьте этот javascript:
function getCompareDate() {
var d = new Date(),
month = '' + (d.getMonth() + 1),
day = '' + d.getDate(),
year = d.getFullYear();
if (month.length < 2) month = '0' + month;
if (day.length < 2) day = '0' + day;
return [year, month, day].join('');
}
$('[future-date]').each(function() {
if($(this).attr('future-date') < getCompareDate()) $(this).hide();
});
Решение найдено здесь: http://jekyllcodex.org/without-plugin/future-dates/
ОБНОВЛЕНИЕ (2018-02-19):
CloudCannon теперь имеет запланированные сборки, где вы можете просто указать, как построить проект один раз в день. Если вы используете CloudCannon, я рекомендую ответ пользователя [здесь].