Сравнение дат в жидкости - PullRequest
13 голосов
/ 17 августа 2011

Я использую Liquid с 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, но не могу понять, как сравнить дату публикации с текущей датой.

Может кто-нибудь помочь?

Ответы [ 2 ]

28 голосов
/ 12 апреля 2014

На основе фильтра даты-математики-манипуляции в жидкости-шаблона и разметки даты-даты-в-джекиле с жидкостью , вы должны быть возможность использовать комбинацию {{'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 %}
4 голосов
/ 13 ноября 2017

Хотя этот код работает:

{% 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, я рекомендую ответ пользователя [здесь] .

...