Sitecore查询排除self

时间:2015-02-25 09:38:57

标签: xpath sitecore

我有一个带有多选的产品模板,可以搜索其他产品。为此,我在multiselect的源字段上使用了sitecore查询:

query:fast:/sitecore/content/Home//*[@@templateid='{DEFA2E43-E688-48E5-AE28-1ABA761105E2}']

使用此查询,所有产品都显示在选择中,包括当前产品项目。

如何排除我正在处理的产品? (排除自我?)

提前致谢

2 个答案:

答案 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重写来源(有关详细信息,请参阅博客文章)。