1. その他の開発タスク

MVCレンダリングのコンテンツの依存関係を構成する

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

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

レンダリングをコンテンツに関連付けるには、データ ソース プロパティ (データ ソースを指定しない場合はページ アイテム) を使用します。コントローラー内のコンテンツにアクセスしたり、RenderingContext.Current.RenderingオブジェクトのItemプロパティまたはItemsプロパティを使用してコードを表示したりできます。

ただし、レンダリング設計で、アイテム (またはアイテム) を超えて、関連付けられたアイテムまたは関連するアイテム間を移動する必要があるシナリオがあります。たとえば、データ ソースを実際のコンテンツのフォルダーまたはコンテナーとして使用できます。この場合、データ ソース プロパティをフォルダー項目に設定し、RenderingContext.Current.Rendering.Item.Childrenオブジェクトを使用してコントローラーまたはビュー コード内のコンテンツにアクセスする必要があります。

別の例は、パンくずリストのレンダリングです。これを使用して、現在のページアイテムの祖先間を移動できます。一般に、レンダリングでは、データ ソース項目 (または複数の項目) がその依存関係の一部に拡張される場合があります。これらの依存関係は、系列または関連する依存関係として分類できます。

これらのコンテンツの依存関係は、Sitecoreのレンダリング アイテムに指定できます。これは、パーシャルHTMLキャッシュのクリア やページ コンテンツ検索などの機能を使用する場合に重要です。

レンダリング コンテンツの依存関係を設定するには:

  1. コンテンツ ツリーのレンダリング定義アイテムに移動します。

  2. Content Dependenciesフィールドで1つ以上のオプションを選択します。

    Content Dependencies field

    次のオプションがあります。

    • Ancestors

      レンダリングでは、データ ソース アイテムの先祖が使用されます。

    • Parent

      レンダリングでは、データ ソース アイテムの親が使用されます。

    • Siblings

      レンダリングでは、データ ソース項目の兄弟が使用されます。

    • Related Items

      レンダリングでは、データ ソース アイテムの関連アイテムが使用されます。

    • Recursive Related Items

      このオプションを他のオプション ( Related Itemsを除く) と共に使用すると、そのオプションのアイテムの関連アイテムもレンダリングで使用されることを示します。たとえば、このオプションをAncestors オプションと一緒に使用すると、すべての祖先とその関連アイテムがレンダリングで使用されることを示します。このオプションは、他の系統オプションと連携するように特別に設計されています。単独で使用する場合は、Related Itemsと同じように機能します。このような場合は、代わりにRelated Itemsを使用してください。

    • Children

      レンダリングでは、データ ソース項目の直接の子が使用されます。

    • Descendants

      レンダリングでは、データ ソース アイテムの子孫が使用されます。

新しいコンテンツ依存関係オプションを作成する

デフォルトのコンテンツ依存関係オプションがニーズに合わない場合は、独自のオプションを作成できます。

オプションを作成するには:

  1. コンテンツ ツリーで、Itemテンプレート (sitecore/templates/System/Item) に基づいて、オプション アイテム を /sitecore/system/Settings/Layouts/Renderings/Content Dependency Typesで作成します。

  2. オプションを検査し、関連する依存関係をパイプラインの結果に追加するプロセッサを追加することで、getRenderingContentDependenciesパイプラインを拡張します。一般的なプロセッサの実装は、次のようになります。

     public void Process(GetRenderingContentDependenciesArgs args)
    {   
        if (args.Datasource == null || args.Datasource.Count == 0)
        {
            return;
        }
    
        if (args.RenderingItem?.ContentDependencies.Contains("THE OPTIONS ITEM ID HERE"))
        {
            var result = new List<ContentDependencyEntry>();
    
            foreach(var datasource in args.Datasource)
            {
                // populate the result with the dependencies 
            }
            
            args.AddResolvedDependencies(result); // submit the result
        }
    }
この記事を改善するための提案がある場合は、 お知らせください!