0

「製品タイプ」テンプレート リストに入力するドロップ リンクを持つサイトコア アイテム「カテゴリ」があります。

各カテゴリには「商品タイプ」があります。

(カテゴリ ノードの下に作成される製品は、ドロップダウンで選択されたテンプレートを使用します。たとえば、シューズ カテゴリにはシューズ テンプレートがあり、スリッパ カテゴリにも靴テンプレートがあり、バッグ カテゴリにはバッグ テンプレートがあります)。

問題:

  1. これらのカテゴリは、関連するカテゴリをマークできる必要があります。したがって、同じ「製品タイプ」のカテゴリを選択するオプションのみを許可するツリーリストの種類のコントロールを表示する必要があります。「靴」のカテゴリには「スリッパ」が必要です。これどうやってするの?

  2. 「靴」の関連アイテムとして「スリッパ」を選択した後、ユーザーが「スリッパ」の「商品タイプ」ドロップ リンク値を変更しようとした場合、この商品タイプが既に別のカテゴリにリンクされていることをユーザーに警告するにはどうすればよいですか? (カテゴリ項目保存時の検証)

これが Sitecore の関連アイテムの一般的な問題であることを願っていますが、解決策が見つかりませんでした。

4

1 に答える 1

1

あなたの最初の問題、「関連するカテゴリーのマーキング」は、あなたがそれで何を達成したいのか私には明確ではありません。しかし、私があなたを正しく理解している場合は、Category-itemでproduct-type-templateを選択して、編集者がCategory-itemの下に選択した製品タイプの製品を作成できるようにします。

これを解決するには、Category-itemのitem:savedイベントを使用します。-最初に、Categoryタイプのアイテムを保存しているかどうかを確認しますが、テンプレートを確認します。-それがCategory-Itemの場合は、product-typeドロップリンクの値を読み取り、その場でこのテンプレートをCategoryアイテムのinsert-optionに追加します。

関連アイテムのチェックに関する2番目の問題は、item:savingイベントを使用することで同じ方法で処理できます。item:savedイベントではありません。これは、アイテムが保存される前にチェックを実行して、保存をキャンセルし、Sitecore.Web.UI.Sheer.SheerResponse.Alert()メソッドを介してメッセージボックスを表示できるようにするためです。item:savingイベントでは、LinkDatabaseメソッドを使用して、現在のアイテムに1つ以上のリファラー(このアイテムにリンクするアイテム)があるかどうかを確認する必要がありますGlobals.LinkDatabase.GetReferrers()

item:savingイベントの代わりにこれに検証を使用することは、検証イベントが警告をスローし、とにかくアイテムを保存するだけなので、役に立ちません。

サンプルコードとのもう1つの優れたリンクは、JohnWestのこのブログです。

于 2013-03-03T19:39:24.817 に答える