在Twig中切片条件循环

时间:2015-03-25 11:22:00

标签: arrays twig template-engine

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

1 个答案:

答案 0 :(得分:1)

最简单的解决方案:

{% 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变量名称。如果你想要更好的东西,你应该写枝条扩展。