0

ユーザーがアップロードしたファイルにカテゴリ フィルターを追加できるカスタム メディア アイテム テンプレートがあります。メディア アイテムはメディア ライブラリに保持されます。フィルターは、コンテンツ ツリーの該当サイトのホーム アイテムの下にあるフォルダーから選択します。これらは、ツリーリスト コントロールを使用して選択されます。複数のサイトがあり、それぞれに独自のホーム アイテムとフィルター フォルダーがあります。各サイトの相対フィルター フォルダーを指すようにツリーリスト コントロールのソースを設定する必要があります。

メディア アイテムが鍬アイテムの下にある場合、これを使用できます。

query:ancestor-or-self::*[@@templatename='Home']/item[@key='filters']

しかしもちろん、メディア アイテムはancestor-or-self::*[@@templatename='Home']そのブランチ上にないため見つかりません。それは並列です。

私たちの命名基準が、完全にアイテム名に基づいた相対パスを保証するほど堅牢であるとは思えません。むしろ、ホーム アイテムの正しい名前を見つけるためにメディア フォルダーの名前を連結する必要は避けたいと思います。

これをエレガントに解決する方法はありますか?

もちろん、フィルター フォルダーを別の場所に配置することもできます。メディア ライブラリ (ビジネス ユーザーにとって直感的ではないため、これは避けたほうがよいでしょう) か、グローバル セクション (ユーザーは以下の特定のサイト フォルダーを見つける必要がある場所) に配置できます。または別のセキュリティ構成をコンテンツ ツリーに追加します)。

4

2 に答える 2

0

私自身の質問に答える:

これは、何らかの形式の命名基準を採用しないと実現できません。メディア ライブラリ内のブランチがコンテンツ ツリー内のブランチ (Site1、Site2、Site3 など) を反映している場合、命名基準によって、メディア ライブラリ ブランチとコンテンツ ツリー ブランチの間の正しい関係を強制できます。このような命名基準とブランチ ミラーリングが存在しない場合、メディア フォルダを特定のサイトに接続するには、何らかの構成アイテムを追加して参照を含める必要があります。

于 2011-09-19T10:05:01.920 に答える
0

getLookupSourceItems パイプラインを使用すると、ソース フィールドにカスタム トークン/構文を追加できます。たとえば、正しいサイトのホーム アイテムを検索できます。

http://www.sitecore.net/Community/Technical-Blogs/John-West-Sitecore-Blog/Posts/2011/05/Reference-the-Context-Item-and-System-Date-in-the-Source- Sitecore-ASPNET-CMS-Fields.aspx のプロパティ

ただし、私が収集できることから、TreeList はこのパイプラインを使用しません。したがって、別のオプションとして、カスタム TeeList フィールド タイプを作成することもできます。

http://www.cmssource.co.uk/blog/custom-tree-list

于 2011-09-12T13:59:39.117 に答える