Twig 中的切片条件循环

Slice conditional loop in Twig

我正在使用 Pico CMS,后者又使用 Twig 作为其模板引擎。我想使用 for 循环显示在元数据中定义了日期的 6 个最新页面。目前我的循环看起来是这样的:{% for page in pages|slice(0,6) if page.date and date(page.date) < date() %},虽然这里的执行顺序不是我想要的,因为首先pages returns一个所有页面的数组,不管有没有哎定义或未定义的日期,然后它将数组中的前 6 个项目切片,然后才将要求页面的日期不晚于今天的条件应用于这 6 个项目。我对 Twig 很陌生,所以我不确定什么语法可以让我在 after 满足要求的条件后对数组进行切片。有什么建议吗?

最简单的解决方案:

{% set limit = 6 %}
{% for page in pages if page.date and date(page.date) < date() and limit > 0 %}
    {# show your entry here #}
    {% set limit = limit - 1 %}
{% endfor %}

它很丑,但应该可以用。如果 limit 变量名称与其他名称冲突,请更改它。如果你想要更好的东西,你应该写树枝扩展。