3

Query.QueryOperator.AND_Field 我们在 Tridion R5.3 VBscript 模板中使用了这种方法,并且效果很好。最近,在迁移到 Tridion 2011 SP1 时,我们尝试使用这种方法,但它不起作用。我们了解到这种方法在新的 tridion 版本中已被贬低。

根据论坛中的一些帖子,我们还在 CD_Storage_Conf 中启用了以下行:

<SearchFilter Name="SearchFilter" Class="com.tridion.broker.components.meta.MsSqlSearchFilterHome" defaultStorageId="defaultdb"/> 
<Item typeMapping="Query" storageId="defaultdb"/>

问题是,“Query.QueryOperator.AND_Field”方法的替代品是什么?我们如何在 C# 中使用这个过滤器?如何使用支持 API 文件中提到的代理查询机制?

谢谢。

4

1 回答 1

6

在 SDL Tridion 2011 Content Delivery 中,您创建一个对象并使用该方法向其中Query添加一个对象。该对象接受一个 Criteria 对象,但该对象又可以引用树结构中的其他对象。CriteriasetCriteriaQueryCriteriaCriteria

有关使用 AND 和 OR 运算符创建查询过滤器的良好示例,请参阅SDL LiveContent 的 SDL Tridion 2011 SP1 文档中的创建过滤器。

// Schema has ID of either 511 (Article) or 34 (Press Release).
ItemSchemaCriteria IsArticle = new ItemSchemaCriteria(511);
ItemSchemaCriteria IsPressRelease = new ItemSchemaCriteria(34);
Criteria IsArticleOrPressRelease = CriteriaFactory.Or(IsArticle, IsPressRelease);

// Type of the item is 16 (Component).
ItemTypeCriteria IsComponent = new ItemTypeCriteria(16);

// Both of the above conditions must be true
Criteria AllCriteria = CriteriaFactory.And(IsArticleOrPressRelease, IsComponent);

// Add these criteria to a query
Query MyQuery = new Query();
MyQuery.Criteria = AllCriteria;
于 2012-09-12T16:01:54.183 回答