【问题标题】:Grav CMS Ordering by Custom Field in Template Blueprint | For LoopGrav CMS 在模板蓝图中按自定义字段排序 |循环
【发布时间】:2018-03-12 17:34:50
【问题描述】:

我正在尝试通过模板蓝图中的自定义字段对 Grav CMS 中的 forloop 输出进行排序。我有一个事件页面,其中包含实际事件的子页面。我正在尝试遍历子页面并按使用日期的自定义字段对输出进行排序。简而言之,显示按日期排序的最新事件。目前我的循环仅按页面顺序输出,而不是按自定义日期字段输出。

蓝图(自定义日期字段)

header.overview.datestart:
  type: datetime
  label: Start Date #PLUGIN_ADMIN.DATE
  toggleable: true

前端

{% set this_year = "now"|date('M d Y') %}       
        {% for feature in page.find('/events').children().order('feature.header.overview.datestart').slice(0, 3) %}

    <li>
       {{ feature.title }}
       {{ feature.header.overview.datestart|date("M d Y") }}
    </li>

{% endfor %}

上面的代码输出正确的数据,但不是按照我需要的顺序。任何帮助,将不胜感激。

【问题讨论】:

  • 你忘了点吗? children()order
  • 哈哈。那是一个错字...我应该只是复制/粘贴。谢谢。在编辑中更正了它。但这就是代码的要点。它的输出不是基于自定义字段日期和现在日期。
  • 估计没人知道
  • 对不起,不要使用它,这可能会有所帮助learn.getgrav.org/content/collections

标签: php twig grav


【解决方案1】:

正如 Grav 的话语论坛中所回答的:

您可以改为将日期存储为 YYYY-MM-DD,以便于比较。 然后你必须将你的 if 调整为 if feature.date|date('Y-m-d') 示例:

{% set this_year = "now"|date('Y-m-d') %}   
{% for feature in page.find('/events').children().slice(0, 3) if feature.date|date('Y-m-d') > this_year %}

        <li>
        {{ feature.title }}
        {{ feature.header.overview.datestart|date("M d Y") }}
        </li>

    {% endfor %}

【讨论】:

  • 谢谢,这帮助我朝着正确的方向前进,保罗。
猜你喜欢
  • 1970-01-01
  • 2017-11-21
  • 2017-07-30
  • 1970-01-01
  • 2015-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多