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
变量名称与其他名称冲突,请更改它。如果你想要更好的东西,你应该写树枝扩展。
我正在使用 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
变量名称与其他名称冲突,请更改它。如果你想要更好的东西,你应该写树枝扩展。