Jekyll:过期日期循环

标签 jekyll

所以我试图展示最新的 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 %}

最佳答案

{% 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 即可更改打印事件的数量。

关于Jekyll:过期日期循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31419830/

相关文章:

jekyll - 如何在jekyll中获取排序后的tags_list

jekyll - 从 Jekyll 导航栏中排除页面

Jekyll with Rouge 和 KaTeX 代码中不能有 $

css - Liquid 和 Jekyll - 在数组中出现字符时添加 CSS 类

jekyll - 如何为具有大图像目录的博客设置 Jekyll,以避免在生成的站点中复制该目录?

sass - 在 GitHub 页面的 Jekyll 站点中包含多个 sass 目录?

html - 在 Markdown 文档中对齐视频嵌入旁边的图片

ruby-on-rails - jekyll 与 ruby​​ 有什么关系?

github - 在github中使用Jekyll制作的Blog中未显示图像

filesystems - 我可以在没有网络服务器的情况下运行 Jekyll 网站吗?