表达式引擎 - exp:channel:entries标签是否可以包含复杂的过滤器?

时间:2012-10-04 03:59:18

标签: expressionengine

来自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)

这甚至可能吗?

3 个答案:

答案 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有用。