我对 Tridion 还很陌生,我必须实现允许内容编辑器创建组件并为其分配多个日期范围(可用日期)的功能。这些将需要从代理查询以提供搜索功能。
最初,这只需要一个开始和结束日期,因此被实现为单独的元数据字段。
我建议在架构的“可用日期”元数据字段中使用嵌入式架构,以允许分配多个开始和结束日期。
但是,由于该字段现在允许多个值,因此数据在代理中存储为“KEY_STRING_VALUE”列中的逗号分隔值,而不是“KEY_DATE_VALUE”列中的日期值,因为它只允许单个开始值和结束值。
例如。
KEY_NAME | KEY_STRING_VALUE
结束日期 | 2012-04-30T13:41:00、2012-06-30T13:41:00
开始日期 | 2012-04-21T13:41:00, 2012-06-01T13:41:00
这现在导致我的代理查询出现问题,因为我不能再使用简单的查询逻辑来检索基于日期进行搜索所需的项目。
在我开始编写 C# 逻辑来解析这些逗号分隔的日期并根据这些日期进行搜索之前,我想知道是否有人过去有类似的要求/经验并以不同的方式实现了这一点,以减少所需的代码解析量和使用代理查询来完成搜索。
我正在 Tridion 2009 上开发它,但使用 5.3 Broker(出于遗留原因),因此查询当前看起来像这样(对于单个开始/结束日期):
query.SetCustomMetaQuery((KEY_NAME='end_date' AND KEY_DATE_VALUE>'" + startDateStr + "') AND (ITEM_ID IN(SELECT ITEM_ID FROM CUSTOM_META WHERE KEY_NAME='start_date' AND KEY_DATE_VALUE<'" + endDateStr + "')))";
任何帮助是极大的赞赏。