2012-08-04 31 views
1

我有一个“特色”小部件,可将访问者引导至我想在特定页面上显示的项目。所以我试图让Alex Shyba的Sitecore高级数据库爬虫返回引用上下文项目的所有项目。如果我放入一个模板ID,它工作正常。但是,如果我管道分隔两个模板,我永远不会得到结果。我究竟做错了什么?多个TemplateId在Sitecore的高级数据库抓取工具中不起作用

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(一方),它按预期工作,但只是返回,显然,指定模板的项目。

+0

转换为ShortID也没有帮助。相同的结果:1模板ID,它就好。 – Niltohams 2012-08-04 15:27:19

+0

这是一个错误。请参阅我在本文中的解决方案: http://stackoverflow.com/questions/9715982/can-we-assign-more-then-one-template-id-in-templateid-like-we-do- in-relatedid – 2012-08-04 22:03:38

回答

0

正如马克指出的那样,这是ADC中的一个错误。我们的解决方案是重构ApplyTemplateFilter方法,如下所示:

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

其中名称空间ApplyIdFilter在? – 2017-12-05 02:00:52

相关问题