sitecore查询是否支持current()函数?

时间:2013-01-15 00:54:56

标签: xpath sitecore sitecore6

如果我尝试在嵌套表达式中的sitecore查询中使用xpath'last()'函数,我会收到错误,如下所示:

/sitecore/content/Home/Topics/*[contains(current()/@MainTopics, @@id)]

我要做的是,使用此查询作为我的DropLink字段的来源,仅列出已在同一项目的另一个“MainTopics”字段中选择的“主题”项目。

但是这给了我一个错误,比如")" expected at position 50

所以看起来current()函数不能在嵌套表达式中使用,或完全使用。如果没有,有没有办法在嵌套表达式中引用当前节点而不是上下文节点?

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

  

sitecore查询是否支持current()功能?

current()是仅在XSLT中定义的函数

根据定义current()生成与当前xsl:templatexsl:for-each

中选择的节点匹配的节点

由于SiteCore似乎没有XSLT实现,答案必须是否定

答案 1 :(得分:0)

我认为在Sitecore查询中没有任何简单的方法可以做到这一点。

但是要在引用另一个字段中选择的项目的模板字段上放置数据源(如果我理解正确的话),那么一种可能的解决方案是构建自定义字段。在自定义字段的代码中,您将执行一些字符串处理以扩展或覆盖Sitecore查询,从而允许您添加指定特定字段ID的查询类型。基本上,你必须编写自己的基本查询语言,可以在C#代码中使用。

您可以从ValueLookupEx派生您的领域,并使用自定义查询处理覆盖GetItems(Item current)方法。正如您所看到的,当前提供的项目非常方便!

我们有类似的要求,我们这样解决了。