0

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

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

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

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

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

有任何想法吗?

4

2 回答 2

2

sitecore 查询支持current()功能吗?

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

根据定义current()产生与当前匹配的xsl:template节点或在一个xsl:for-each

由于 SiteCore 似乎没有 XSLT 实现,所以答案肯定是否定的

于 2013-01-15T01:07:24.637 回答
0

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

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

您可以从您的字段派生并使用您的自定义查询处理ValueLookupEx覆盖该方法。GetItems(Item current)如您所见,它非常方便地与提供的当前项目一起提供!

我们有一个类似的要求,我们通过这种方式解决了。

于 2013-01-16T15:59:30.763 回答