多个TemplateIds在Sitecore的高级数据库爬虫中不起作用

时间:2012-08-04 14:52:37

标签: sitecore

我有一个“精选”小部件,可以引导访问者访问我要在某些网页上展示的内容。所以我试图让Alex Shyba的Sitecore高级数据库爬虫返回所有引用上下文项的项目。如果我输入一个模板ID,它可以正常工作。但是,如果我管道划分两个模板,我永远不会得到结果。我做错了什么?

var searchParam = new MultiFieldSearchParam()
{
    Database = Sitecore.Context.Database.Name,
    Language = Sitecore.Context.Language.Name,
    TemplateIds = "{E5B41848-3C07-4F17-84A5-C2C29AD43CAE}|{0C2E35D7-C4C9-478B-B4AB-DE8C2A00908B}"
};            
var refinements = new List<MultiFieldSearchParam.Refinement>();
refinements.Add(new MultiFieldSearchParam.Refinement("pages", contextItemGUID));
searchParam.Refinements = refinements;

var runner = new QueryRunner("web");
foreach (var skinnyItem in runner.GetItems(searchParam))
{
    yield return skinnyItem.GetItem();
}

同样,如果我将TemplateIds作为单个GUID(任一个),它会按预期工作,但显然只返回指定模板的项目。

1 个答案:

答案 0 :(得分:0)

正如Mark所说,这是ADC中的一个错误。我们的解决方案是重构ApplyTemplateFilter方法,如下所示:

protected void ApplyTemplateFilter(CombinedQuery query, string templateIds, QueryOccurance occurance)
{
    ApplyIdFilter(query, BuiltinFields.Template, templateIds, occurance);
}