我有一个带有多选的产品模板,可以搜索其他产品。为此,我在multiselect的源字段上使用了sitecore查询:
query:fast:/sitecore/content/Home//*[@@templateid='{DEFA2E43-E688-48E5-AE28-1ABA761105E2}']
使用此查询,所有产品都显示在选择中,包括当前产品项目。
如何排除我正在处理的产品? (排除自我?)
提前致谢
答案 0 :(得分:1)
您应该能够使用ExcludeItemsForDisplay
设置要排除的项目的ID。
请参阅链接 - http://firebreaksice.com/tame-your-sitecore-treelists/
复杂性将是通过快速查询以编程方式设置ID,即自我,除非硬编码它可以满足您的要求。
答案 1 :(得分:1)
我认为正确的方法是使用getLookupSourceItems
管道。我在这里写了一篇关于这个管道的博客文章:
http://ctor.io/dynamic-field-sources-with-getlookupsourceitems-pipeline/
在此管道中,您知道当前项目的ID为args.Item.ID
。然后,您可以动态地将源重写为不包括当前项的查询。像这样(未经测试):
query:fast:/sitecore/content/Home//*[@@templateid='{DEFA2E43-E688-48E5-AE28-1ABA761105E2}' and @@id != '<current item id>']
可以使用args.Source
重写来源(有关详细信息,请参阅博客文章)。