2012-08-04 28 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

相關問題