我有一个管理事件的通道,当我想实现一些常见操作(例如显示过去的事件)时,我遇到了问题。如果我想查看当前和未来的事件,我认为我可以通过以下方式获取它:
{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
并以不正确的顺序显示它。
事实上,问题是:
- 对于当前和将来的事件,事件 = start_on 参数不包含在结果中。
- 对于过去的事件,它以错误的顺序显示事件(最早的事件是显示的第一个事件)。
有人可以告诉我我的代码是否有问题吗?
我使用的是EE 2.4.0,并且在我尝试执行这些操作的模板中的输入中启用了php。
我在这里看到的一些东西。
orderby="{date}"
实际上应该orderby="date"
(或者可以是 完全省略,因为日期/entry_date是默认的排序)。
您对即将举行的活动的问题可能是您生成的方式 您的$entry_date
变量。你能告诉我这是如何创建的吗 完全?您是否在某处回响以确保它确实如此 你以为它是什么?您可能会遇到本地化问题 EE 和您的服务器之间的差异。如果您确实有条目 与你在start_on
中的内容完全相同的输入日期,它 应该出现。尝试手动将日期放入start_on
以进行故障排除。
对于过去的事件,您应该使用 stop_before
,而不是start_on
。这两个参数不注意您的sort
参数 - 它们始终基于时间顺序。