1

我有一个“特色”小部件,可以引导访问者访问我想在某些页面上展示的项目。因此,我试图让 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(任一 GUID),它会按预期工作,但显然只是返回指定模板的项目。

4

1 回答 1

0

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

protected void ApplyTemplateFilter(CombinedQuery query, string templateIds, QueryOccurance occurance)
{
    ApplyIdFilter(query, BuiltinFields.Template, templateIds, occurance);
}
于 2012-08-15T16:39:40.003 回答