1. オプション挿入

Insertルールの作成と割り当て

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

挿入オプションを割り当てる過程の一環として、管理者は挿入ルールを定義でき、これにより実行時に ユーザーの有効な挿入オプション を動的に再定義できます。開発者は管理者が選択できるカスタム挿入ルールを実装できます。

管理者はまた、効果的な挿入オプションを定義するためにInsert Optionsルールを実装し、ルールパラメータを選択するユーザーインターフェースを提供できます。特定のアイテムに適用されるInsertルールとは異なり、Insert Optionsルールはすべてのアイテムに適用されますが、通常はその適用を制限します。

このトピックでは、Insertルールの作成と割り当て方法について説明します。

Insertルールを作成する

挿入ルールを挿入オプションに 割り当てることで 、実行時に利用可能な 有効な挿入オプション を動的に再定義できます。

インサートルールを作成するには:

  1. 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 } } }

  2. コンテンツエディターで、/Templates/Common/Folder data template templateを使って、/Sitecore/System/Settings/Insert Rules下に必要なプロジェクト固有のフォルダを挿入します。

  3. 該当するプロジェクト固有のフォルダ内に、/System/Branches/Insert Rule data data template templateを使ってルール定義アイテムを挿入します。

  4. ルール定義項目の挿入、データ セクションの タイプ フィールドにクラスの署名を入力します。

!注挿入ルールを他の項目に割り当てるには、「 挿入オプションの割り当てまたはコピー」を参照してください。

インサートルールを割り当てる

挿入オプション自体に挿入ルールを割り当てることで、実行時にユーザーの効果的な挿入オプションを動的に再定義できます。管理者が選択できるカスタム挿入ルールも実装できます。

データテンプレートまたは個別の項目にインサートルールを割り当てるには:

  1. テンプレートマネージャーまたはコンテンツエディターで、標準値の項目または個別の項目を選択します。
  2. 構成 」タブの 「オプションを挿入 」グループで「 割り当て」をクリックします。
  3. Insert OptionsダイアログボックスのInsert Rulesタブで、Insert RuleをダブルクリックしてSelectedリストに移動します。
  4. 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); } } } } }

この記事を改善するための提案がある場合は、 お知らせください!