Tridion Filter:替换SetCustomMetaQuery

时间:2012-10-11 10:28:28

标签: tridion tridion-2011 tridion-content-delivery

Broker查询机制(Tridion 2011)中SetCustomMetaQuery的替代品是什么? 我通过之前发布的this post得到了很多帮助。

代表

query.SetCustomMetaQuery("KEY_NAME='Key' AND KEY_STRING_VALUE >= 'Yes'");

我试过

CustomMetaValueCriteria criteria1 = new CustomMetaValueCriteria(new CustomMetaKeyCriteria("Key"), "Yes");
mainCriteria =CriteriaFactory.And(mainCriteria, criteria1);
query.Criteria = mainCriteria;

但我被困在其中一个过滤器CT中的两个例子中。

query.SetCustomMetaQuery("(((KEY_NAME='EventStartDate' AND 
KEY_DATE_VALUE >= '" + lowerDate + "')) or
((KEY_NAME='EventEndDate' AND KEY_DATE_VALUE >= '" + lowerDate + "')))"")

query.SetCustomMetaQuery("KEY_NAME = 'Publication_Issue_Date' and 
((convert(varchar(10), key_date_value, 101) = convert(varchar(10), 
cast('" + sIssueDate + "' as datetime), 101)) or
key_string_value like '%" + dtIssue[%=nNumber%].Year + "-0" + dtIssue[%=nNumber%].Month + "-" + dDay[%=nNumber%] + "%')");

有什么可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

请尝试:

CustomMetaValueCriteria criteria1 = new CustomMetaValueCriteria(new CustomMetaKeyCriteria("Key"), "Yes", Criteria.GreaterThanOrEqual);

让我知道这是否有效。

答案 1 :(得分:2)

以为我会抓住这个,所以可能会离开!

第一个例子是怎么回事:

CustomMetaValueCriteria criteria1 = new CustomMetaValueCriteria(new CustomMetaKeyCriteria("EventStartDate"), lowerDate, Criteria.GreaterThanOrEqual);
CustomMetaValueCriteria criteria2 = new CustomMetaValueCriteria(new CustomMetaKeyCriteria("EventEndDate"), lowerDate, Criteria.GreaterThanOrEqual);

OrCriteria or = new OrCriteria(criteria1, criteria2);

假设“lowerDate”是DateTime。

第二个有点令人困惑,看起来它检查是否存在“Publication_Issue_Date”和任何等于 sIssueDate 变量 OR 的KEY_DATE_VALE有一个字符串日期中的元数据值。那会是什么样的?

CustomMetaKeyCriteria criteria1 = new CustomMetaKeyCriteria ("Publication_Issue_Date")
CustomMetaValueCriteria criteria2 = new CustomMetaValueCriteria(sIssueDate);
AndCriteria andCriteria = new AndCriteria(criteria1, criteria2);

string dt = dtIssue[%=nNumber%].Year + "-0" + dtIssue[%=nNumber%].Month + "-" + dDay[%=nNumber%];
CustomMetaValueCriteria criteria3 = new CustomMetaValueCriteria(dt, Criteria.Like)

OrCriteria or = new OrCriteria(andCriteria, criteria3);

干杯