Insertルールの作成と割り当て
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
挿入オプションを割り当てる過程の一環として、管理者は挿入ルールを定義でき、これにより実行時に ユーザーの有効な挿入オプション を動的に再定義できます。開発者は管理者が選択できるカスタム挿入ルールを実装できます。
管理者はまた、効果的な挿入オプションを定義するためにInsert Optionsルールを実装し、ルールパラメータを選択するユーザーインターフェースを提供できます。特定のアイテムに適用されるInsertルールとは異なり、Insert Optionsルールはすべてのアイテムに適用されますが、通常はその適用を制限します。
このトピックでは、Insertルールの作成と割り当て方法について説明します。
Insertルールを作成する
挿入ルールを挿入オプションに 割り当てることで 、実行時に利用可能な 有効な挿入オプション を動的に再定義できます。
インサートルールを作成するには:
-
Sitecore.Data.Masters.InsertRuleクラスから継承するクラスを作成し、単一のSystem.Int32パラメータを受け入れるコンストラクタを使い、Expand()メソッドを上書きします。以下のコードサンプルを使用できます:
namespace Namespace.Data.InsertRules { public class ClassName : Sitecore.Data.Masters.InsertRule { public ClassName(System.Int32 count) { } public override void Expand( System.Collections.Generic.List<Sitecore.Data.Items.Item> insertOptions, Sitecore.Data.Items.Item item) { //TODO: manipulate insertOptions } } }
-
コンテンツエディターで、/Templates/Common/Folder data template templateを使って、/Sitecore/System/Settings/Insert Rules下に必要なプロジェクト固有のフォルダを挿入します。
-
該当するプロジェクト固有のフォルダ内に、/System/Branches/Insert Rule data data template templateを使ってルール定義アイテムを挿入します。
-
ルール定義項目の挿入、データ セクションの タイプ フィールドにクラスの署名を入力します。
!注挿入ルールを他の項目に割り当てるには、「 挿入オプションの割り当てまたはコピー」を参照してください。
インサートルールを割り当てる
挿入オプション自体に挿入ルールを割り当てることで、実行時にユーザーの効果的な挿入オプションを動的に再定義できます。管理者が選択できるカスタム挿入ルールも実装できます。
データテンプレートまたは個別の項目にインサートルールを割り当てるには:
- テンプレートマネージャーまたはコンテンツエディターで、標準値の項目または個別の項目を選択します。
- 「 構成 」タブの 「オプションを挿入 」グループで「 割り当て」をクリックします。
- Insert OptionsダイアログボックスのInsert Rulesタブで、Insert RuleをダブルクリックしてSelectedリストに移動します。
- OKをクリックします。
例
以下のInsertルールの例はこれらの要件を実装しています:
- ホームアイテムの下で、ユーザーは複数の異なるデータテンプレートに基づいて子項目を作成できます。
- ホームアイテムの下では、ユーザーは任意のデータテンプレートに基づいて2つの子項目を作成することはできません。
namespace Namespace.Data.InsertRules { public class PreventChildrenWithCommonTemplate : Sitecore.Data.Masters.InsertRule { public PreventChildrenWithCommonTemplate(System.Int32 count) { } public override void Expand( System.Collections.Generic.List<Sitecore.Data.Items.Item> insertOptions, Sitecore.Data.Items.Item item) { foreach (Sitecore.Data.Items.Item insertOption in insertOptions.ToArray()) { if(item.Axes.SelectSingleItem("./*@@templateid='"+insertOption.ID + "'")!=null) { insertOptions.Remove(insertOption); } } } } }