1. その他の開発課題

MVCレンダリングのためのコンテンツ依存関係の設定

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

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

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

しかし、レンダリングデザインの上、アイテム(または複数のアイテム)を超えて関連するアイテムをナビゲートする必要がある場合もあります。例えば、データソースを実際のコンテンツのフォルダやコンテナとして使うことができます。この場合、データソースプロパティをフォルダアイテムに設定し、RenderingContext.Current.Rendering.Item.Childrenオブジェクトを使ってコントローラーやビューコードでコンテンツにアクセスする必要があります。

もう一つの例はブレッドクラムレンダリングです。これを使って現在のページ項目の祖先をナビゲートできます。一般的に、レンダリングはデータソースの項目(または複数の項目)をいくつかの依存関係に拡張することがあります。これらの依存関係は系譜依存関係や関連する依存関係に分類できます。

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

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

  1. コンテンツツリー内のレンダリング定義項目に移動します。

  2. コンテンツ依存関係フィールドで1つ以上のオプションを選択してください:

    Content Dependencies field

    選択肢は以下の通りです:

    • 先祖

      レンダリングでは、データソースの項目の祖先を用います。

    • レンダリングはデータソースの親項目を使用します。

    • 兄弟姉妹

      レンダリングではデータソースのアイテムの兄弟姉妹を使用します。

    • 関連項目

      レンダリングでは、データソースの関連項目を使用します。

    • 再帰関連項目

      このオプションを他のオプション( 関連アイテムを除く)で使用すると、そのオプションの関連アイテムもレンダリングで使用されることを示します。例えば、このオプションをAncestorsオプションで使うと、すべての祖先とその関連アイテムがレンダリングで使用されていることを示します。このオプションは他の系譜オプションと連携して動作するよう特別に設計されています。単独で使用する場合はRelated Itemsと同じ仕組みで動作します。その場合はRelated Itemsを使いましょう。

    • 子供たち

      レンダリングはデータソースの項目の直接子を使用します。

    • 子孫

      レンダリングはデータソースのアイテムの子孫を使用します。

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

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

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

  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();

    foreach(var datasource in args.Datasource) { // populate the result with the dependencies }

    args.AddResolvedDependencies(result); // submit the result } }

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