3

我有一个管理事件的渠道,当我想实现一些常见的操作(例如显示过去的事件)时遇到了问题。如果我想查看当前和未来的事件,我认为我可以通过以下方式获得它:

{exp:channel:entries channel="events" show_future_entries="yes" show_expired="no" orderby="{date}" sort="asc" dynamic="no" start_on=""}

其中 $entry_date 的格式为 YYYY-MM-DD HH:MM(例如:2011-08-02 11:00)

它应该按以下顺序显示事件:

2012-08-02 11:00
2012-09-02 11:00
2012-10-02 11:00
2012-11-02 11:00

但它在显示它们时不包括 2012-08-02 11:00 的事件(似乎 EE 所做的比较是 >,而不是 >=)

还有过去的事件(标记为已过期)我按年份组织和显示它们:

{exp:channel:entries channel="events" show_future_entries="no" show_expired="yes" orderby="{date}" sort="desc" dynamic="no" year="" start_on=""}

假设我过去的事件是:

2011-08-02 11:00
2011-09-02 11:00
2011-10-02 11:00
2011-11-02 11:00

和 $entry_date = 2011-10-02 11:00

它应该显示如下内容:

2011-10-02 11:00
2011-09-02 11:00
2011-08-02 11:00

并且它以错误的顺序显示它。

其实问题是:

  1. 对于当前和未来的事件,结果中不包含 event = start_on 参数。
  2. 对于过去的事件,它以错误的顺序显示事件(最旧的事件是第一个显示的事件)。

有人可以告诉我我的代码是否有问题吗?

我正在使用 EE 2.4.0,并且在我尝试执行这些操作的模板中的输入处启用了 php。

4

1 回答 1

1

我在这里看到的几件事。

orderby="{date}"实际上应该是orderby="date"(或者可以完全省略,因为 date/entry_date 是默认的 orderby)。

您对即将发生的事件的问题可能是您生成$entry_date变量的方式。你能告诉我它是如何创建的吗?您是否在某处呼应它以确保它实际上是您认为的那样?您可能会遇到 EE 和您的服务器之间的本地化差异。如果您确实有一个条目与您的输入日期完全相同start_on,它 应该会出现。尝试start_on手动输入日期以进行故障排除。

对于您过去的事件,您应该使用 stop_before,而不是start_on。这两个参数不注意您的sort参数 - 它们始终基于年表。

于 2012-06-06T12:37:26.127 回答