如果我尝试在嵌套表达式中的sitecore查询中使用xpath'last()'函数,我会收到错误,如下所示:
/sitecore/content/Home/Topics/*[contains(current()/@MainTopics, @@id)]
我要做的是,使用此查询作为我的DropLink字段的来源,仅列出已在同一项目的另一个“MainTopics”字段中选择的“主题”项目。
但是这给了我一个错误,比如")" expected at position 50
所以看起来current()
函数不能在嵌套表达式中使用,或完全使用。如果没有,有没有办法在嵌套表达式中引用当前节点而不是上下文节点?
有什么想法吗?
答案 0 :(得分:2)
sitecore查询是否支持
current()
功能?
current()
是仅在XSLT中定义的函数。
根据定义current()
生成与当前xsl:template
或xsl:for-each
由于SiteCore似乎没有XSLT实现,答案必须是否定。
答案 1 :(得分:0)
我认为在Sitecore查询中没有任何简单的方法可以做到这一点。
但是要在引用另一个字段中选择的项目的模板字段上放置数据源(如果我理解正确的话),那么一种可能的解决方案是构建自定义字段。在自定义字段的代码中,您将执行一些字符串处理以扩展或覆盖Sitecore查询,从而允许您添加指定特定字段ID的查询类型。基本上,你必须编写自己的基本查询语言,可以在C#代码中使用。
您可以从ValueLookupEx
派生您的领域,并使用自定义查询处理覆盖GetItems(Item current)
方法。正如您所看到的,当前提供的项目非常方便!
我们有类似的要求,我们这样解决了。