0

ネストされた式内のサイトコア クエリで xpath 'current()' 関数を使用しようとすると、次のようなエラーが発生します。

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

私がやろうとしているのは、このクエリを DropLink フィールドのソースとして使用して、同じアイテムの別の「MainTopics」フィールドで既に選択されている「トピック」アイテムのみをリストすることです。

しかし、これは私に次のようなエラーを与えます")" expected at position 50

そのため、current()関数はネストされた式内または完全に使用できないようです。そうでない場合、ネストされた式内からコンテキストノードではなく、現在のノードを参照する方法はありますか?

何か案は?

4

2 に答える 2

2

サイトコア クエリ サポートcurrent()機能はありますか?

current()XSLT でのみ定義される関数です。

定義current()により、現在のノードに一致するxsl:templateノード、またはxsl:for-each

SiteCore には XSLT 実装がないように見えるため、答えは否定的でなければなりません

于 2013-01-15T01:07:24.637 に答える
0

Sitecore クエリでこれを行う簡単な方法はないと思います。

しかし、別のフィールドで選択された項目を参照するテンプレート フィールドにデータ ソースを配置するには (私の理解が正しければ)、考えられる解決策の 1 つは、カスタム フィールドを作成することです。カスタム フィールドのコードでは、特定のフィールド ID を指定するクエリ タイプを追加できるように、Sitecore クエリを拡張またはオーバーライドするために何らかの文字列処理を行います。基本的に、C# コード内で使用できる独自の非常に基本的なクエリ言語を作成する必要があります。

フィールドを派生させ、カスタム クエリ処理でメソッドをValueLookupExオーバーライドできます。GetItems(Item current)ご覧のとおり、現在提供されているアイテムには非常に便利です。

同様の要件があり、この方法で解決しました。

于 2013-01-16T15:59:30.763 に答える