来自Codeigniter,以及来自Expression Engine的新手,我对如何在exp:channel:entries标签上执行复杂过滤器感到茫然。
我对此过滤器感兴趣
status
start_on
stop_before
如何为这样的复杂条件实施过滤器?
(status=X|Y|Z AND start_on=A AND stop_before=B) OR (status=X AND start_on=C AND stop_before=D)
这甚至可能吗?
答案 0 :(得分:1)
不幸的是,您只能使用search=
参数搜索“文本输入”,“Textarea”和“下拉列表”字段。因此,您需要使用查询模块。
如果您只是查询这些参数,您应该能够从exp_channel_titles
表中获取所需的条目ID,然后使用类似Stash插件的内容来提供{{1}将结果转换为常规通道条目标记。是的,它名义上是另一种查询方式,但是当EE对数据库模式进行相当大的抽象时,另一种选择就是迷失在entry_id
的混乱中。
所以像(伪代码,不会按原样):
获取条目,状态只是exp_channel_titles中的一个字符串,JOIN
是您想要的日期列 - 它存储为unix时间戳,因此您需要使用类似{{1}的内容来选择它取决于过滤数据的格式。
entry_date
稍后在模板中:
DATE( FROM_UNIXTIME(entry_date))
是的,与您在纯CI中习惯的相比,这是一个烂摊子,但权衡是您从EE(CP,模板,会员管理等)免费获得的所有东西。
Stash很棒 - 可用于大规模缓解大多数EE性能问题/解决解析顺序问题
答案 1 :(得分:0)
您可以使用{exp:channel:entries...}
循环中的search=
参数获得大量此功能。
我不清楚你将如何获得所寻求的复杂性,所以你最终可能会诉诸query module
。
答案 2 :(得分:0)
如果您正在使用日期,则可能会发现DT plugin有用。