代码之家  ›  专栏  ›  技术社区  ›  Inverbis

细枝中的切片条件循环

  •  1
  • Inverbis  · 技术社区  · 10 年前

    我使用Pico CMS,而Pico CMS又使用Twig作为模板引擎。我想使用 for 环现在我的循环看起来像这样: {% for page in pages|slice(0,6) if page.date and date(page.date) < date() %} ,虽然这里的执行顺序不是我想要的,因为首先 pages 返回一个包含所有页面的数组,不管是否定义了日期,然后将数组中的前6个项目切片,然后才将要求页面日期不晚于今天的条件应用于这6个项目。我对Twig很陌生,所以我不确定什么语法允许我分割数组 之后 它已满足要求的条件。有什么建议吗?

    1 回复  |  直到 10 年前
        1
  •  1
  •   Damian Polac    10 年前

    最简单的解决方案:

    {% 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 变量名,如果它与其他对象共线。如果你想要更好的东西,你应该写细枝扩展。