Jekyll: Looping with expired Dates -


so i'm trying show latest 5 upcoming events. i'm pulling form data file. noticed when event expires , remains in data file, homepage showing 5 minus amount of expired events.

for example, if there 1 event expired homepage show 4 of upcoming events, instead of skipping expired event , looping. can help? thanks!

{% assign eventpost = site.data.events | sort: 'date' %} {% event in eventpost limit:5 %} {% assign curdate = site.time | date: '%y-%m-%d' %} {% assign poststartdate = event.date | date: '%y-%m-%d' %} {% if poststartdate >= curdate %} <div class="content--block"> <div class="event--info"> <p class="content--date">{{ event.date | date: '%b %-d, %y' }}</p> <h3 class="content--title">{{ event.title }}</h3> {% if event.time %} <p class="content--location"><strong>{{ event.location }}</strong> @ <strong>{{ event.time }}</strong></p> {% else %} <p class="content--location"><strong>{{ event.location }}</strong></p> {% endif %} {% if event.subheader %} <p class="content--description">{{ event.subheader }}</p> {% endif %} </div> {% if event.button == true %} <a href="{{ event.eventlink }}" target="_blank"><button class="outline">attend</button></a> {% endif %} </div> {% endif %} {% endfor %}

{% event in eventpost limit:5 %} instructs liquid create temporary array 5 first eventpost elements. loop looping on 5 elements , no more.

use counter instead. note, i've sniped code in print loop brevity.

{% assign eventpost = site.data.events | sort: 'date' %} {% assign eventsnumber = 5 %} {% assign printedevents = 0 %}  {% event in eventpost %}     {% assign curdate = site.time | date: '%y-%m-%d' %}     {% assign poststartdate = event.date | date: '%y-%m-%d' %}     {% if (poststartdate >= curdate) , (printedevents < eventsnumber) %}         {% assign printedevents = printedevents | plus: 1 %}         <p>{{ event.date | date: '%b %-d, %y' }} - {{ event.title }}</p>     {% endif %} {% endfor %} 

you have change eventsnumber change number of printed events.


Comments