【问题标题】:Jekyll: Looping with expired DatesJekyll:循环过期日期
【发布时间】:2015-07-15 01:06:00
【问题描述】:

所以我试图展示最新的 5 个即将发生的事件。我正在从数据文件中提取所有内容。但我注意到,当一个事件过期并保留在数据文件中时,主页显示的是 5 减去过期事件的数量。

例如,如果有 1 个事件已过期,则主页将仅显示 4 个即将发生的事件,而不是跳过已过期的事件并循环播放。任何人都可以帮忙吗?谢谢!

{% assign eventPost = site.data.events | sort: 'date' %}
            {% for 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> at <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 %}

【问题讨论】:

  • 所以我意识到这个问题已经有 4 年历史了......但是这种方法是否不需要在每次您想要更新即将到来的事件列表时重新部署站点,即使您想要发生的只是为了自动翻转的日期?

标签: jekyll


【解决方案1】:

{% for event in eventPost limit:5 %} 指示 Liquid 创建一个临时数组,其中包含 5 个前 eventPost 元素。您的循环肯定会循环超过 5 个元素,仅此而已。

改为使用计数器。请注意,为简洁起见,我在打印循环中截取了代码。

{% assign eventPost = site.data.events | sort: 'date' %}
{% assign eventsNumber = 5 %}
{% assign printedEvents = 0 %}

{% for event in eventPost %}
    {% assign curDate = site.time | date: '%Y-%m-%d' %}
    {% assign postStartDate = event.date | date: '%Y-%m-%d' %}
    {% if (postStartDate >= curDate) and (printedEvents < eventsNumber) %}
        {% assign printedEvents = printedEvents | plus: 1 %}
        <p>{{ event.date | date: '%B %-d, %Y' }} - {{ event.title }}</p>
    {% endif %}
{% endfor %}

然后您只需更改eventsNumber 即可更改打印事件的数量。

【讨论】:

    猜你喜欢
    • 2018-12-19
    • 1970-01-01
    • 2013-04-16
    • 2019-05-12
    • 2020-07-08
    • 1970-01-01
    • 2019-01-04
    • 2018-01-26
    • 1970-01-01
    相关资源
    最近更新 更多