1. 挿入オプション

挿入ルールを作成して割り当てる

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

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

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

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

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

挿入ルールを作成する

挿入ルールを挿入オプションに割り当てて、実行時にユーザーが使用できる有効な挿入オプションを動的に再定義できます。

挿入ルールを作成するには:

  1. Sitecore.Data.Masters.InsertRuleクラスから継承するクラスを作成し、1つの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. コンテンツ エディターで、必要なプロジェクト固有のフォルダーを /Sitecore/System/Settings/Insert Rulesの下に挿入します。 /Templates/Common/Folder data templateテンプレートを使用します。

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

  4. 挿入ルール定義アイテムの「 Data 」セクションの「 Type 」フィールドに、クラスのシグネチャを入力します。

メモ

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

挿入ルールを割り当てる

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

データ テンプレートに基づくすべてのアイテムまたは個々のアイテムに挿入ルールを割り当てるには:

  1. Template Managerまたはコンテンツ エディターで、標準値のアイテムまたは個々のアイテムを選択します。

  2. ConfigureタブのInsert Optionsグループで、Assignをクリックします。

  3. Insert Optionsダイアログ ボックスのInsert Rulesタブで、挿入ルールをダブルクリックしてSelectedリストに移動します。

  4. OK」をクリックします。

例: 1つのデータ テンプレートに基づく複数の子を防止するコード

次の挿入ルールの例では、これらの要件を実装しています。

  • ホーム項目の下で、ユーザーはさまざまなデータ テンプレートのそれぞれに基づいて子項目を作成できます。

  • ホーム項目では、ユーザーはデータ テンプレートに基づいて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);
     }
    }
   }
  }
 }
この記事を改善するための提案がある場合は、 お知らせください!