チュートリアル: コンテンツ リゾルバーをレンダリングするモデルバインド ビューの作成
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
前に アプリを統合した場合は、従来の ASP.NET Core Rendering SDKバージョン22以前を使用しています。このSDKは更新を受け取っていないため、新しい の最新バージョンにアップグレードすることをお勧めします。
Sitecoreレイアウト サービスでコンテンツ リゾルバーを使用して、コンポーネント データ ソースのシリアル化を超えたより複雑なデータを提供します。一般的なユース ケースには、サイト ナビゲーション、検索結果、カスタム ビジネス ロジックの出力または状態を返すことなどがあります。このチュートリアルでは、コンテンツ ツリーのモデルを返すコンテンツ リゾルバーを作成して、モデル バインド ビューでレンダリングする方法を学習します。
チュートリアルを完了したら、Sitecore Helixのプラクティスに慣れて、ビジネス ドメインに従ってソリューションを整理し、複数のサービスからの関連コードに共通のクロージャを作成することをお勧めします。これにより、関連するコンテンツ リゾルバーとレンダリング コードをソリューション内に併置できます。インスピレーションを得るには、Sitecore Helix Examplesリポジトリを参照してください。
コンテンツ リゾルバを作成するには、次の手順を完了する必要があります。
-
Sitecore.LayoutService NuGetパッケージを追加します。
-
Templatesクラスを追加します。
-
コンテンツ・リゾルバ・クラスを作成します。
-
コンテンツ リゾルバー項目を作成します。
-
JSONレンダリング アイテムを作成します。
-
JSONレンダリング項目をAppRouteテンプレートの標準値に追加します。
-
コンテンツ リゾルバをテストします。
コンテンツ リゾルバをレンダリングするモデルバインド ビューを作成するには、次の手順を完了する必要があります。
-
モデルを作成します。
-
モデル境界ビューを作成します。
-
モデル バインド ビューを登録します。
-
モデルバインド ビューをテストします。
Sitecore.LayoutService NuGetパッケージを追加します
Sitecore.LayoutService NuGetパッケージを追加します
Sitecore.LayoutService NuGetパッケージには、コンテンツ リゾルバー クラスの継承元であるSitecore.LayoutService.ItemRendering.ContentsResolvers.RenderingContentsResolverWindowsクラスが含まれています。
Sitecore.LayoutService NuGetパッケージをPlatformプロジェクトに追加するには:
-
Visual Studioのソリューション エクスプローラーで、Platform/Referencesを右クリックし、Manage NuGet Packagesをクリックします。
-
ウィンドウの右上隅にあるPackage sourceメニューで、https://nuget.sitecore.com/resources/v3/index.jsonを指すパッケージ ソースを選択します。
-
ウィンドウの左上隅にあるBrowseをクリックし、Sitecore.LayoutService NuGetパッケージを検索します。
-
検索結果のリストで、Sitecore.LayoutServiceをクリックします。
-
ウィンドウの右側にあるInstallをクリックして、Sitecore.LayoutService NuGetパッケージをダウンロードしてインストールします。
-
必要に応じて、Nugetパッケージ マネージャーがソリューションを変更できるようにします。
Templatesクラスを追加する
Templatesクラスを追加する
Templatesクラスは、コンテンツ リゾルバ クラスの依存関係です。
TemplatesクラスをPlatformプロジェクトに追加するには、次のようにします。
-
Visual Studioのソリューション エクスプローラーで、Platformを右クリックし、Add、New Itemの順にクリックします。
-
Add New Itemダイアログで、次の操作を行います。
-
左側のウィンドウで、Installed/Visual C#/ASP.NET Core/Codeをクリックします。
-
中央のウィンドウで、Classをクリックします。
-
下部のNameフィールドに「 Templates.cs 」と入力し、Addをクリックします。
-
-
クラス・ファイルに、次の内容を追加します。
-
クラス・ファイルを保存します。
コンテンツ リゾルバー クラスを作成する
コンテンツ リゾルバー クラスを作成する
コンテンツ リゾルバー クラスは、Sitecore.LayoutService.ItemRendering.ContentsResolvers.RenderingContentsResolverクラスのResolveContentsメソッドをオーバーライドし、コンテンツ ツリー オブジェクトを返します。
ResolveContentsメソッドはmustJSONレンダリングとしてレンダリングホストに返すことができるオブジェクトを返すことができます。
Platformプロジェクトでコンテンツ リゾルバ クラスを作成するには、次のようにします。
-
Visual Studioのソリューション エクスプローラーで、Platformを右クリックし、Add、New Itemの順にクリックします。
-
Add New Itemウィンドウで、次の操作を行います。
-
左側のウィンドウで、Installed/Visual C#/ASP.NET Core/Codeをクリックします。
-
中央のウィンドウで、Classをクリックします。
-
下部のNameフィールドに「 NavigationContentsResolver.cs 」と入力し、Addをクリックします。
-
-
クラスファイルに、次の内容を入力します。
-
クラス・ファイルを保存します。
-
Platformプロジェクトを右クリックし、Publishをクリックします。
-
PlatformウィンドウでPublishをクリックして、Sitecore Content ManagementインスタンスとContent DeliveryインスタンスでPlatformプロジェクトを公開します。
-
ナビゲーション コンテンツ リゾルバーは、Sitecore.Context.Itemまたは別のページ固有のコンテキストを使用して、現在またはアクティブなナビゲーション項目のデータを出力しないようにする必要があります (ナビゲーション メニューでアクティブなナビゲーション項目を強調表示するなど)。これはクライアント側でより適切に処理され、ページ間でナビゲーションデータをキャッシュできるようになります。
-
Sitecoreクエリや、可能な場合はコンテンツ ツリーをナビゲートする他のリソースを大量に消費する方法の代わりに、Sitecoreコンテンツ検索を使用します。
コンテンツ リゾルバー項目を作成する
コンテンツ リゾルバー項目を作成する
コンテンツ リゾルバー アイテムは、コンテンツ リゾルバー クラスをSitecoreにリンクします。
Sitecoreインスタンスでコンテンツ リゾルバー アイテムを作成するには:
-
コンテンツ エディタで、/sitecore/System/Modules/Layout Service/Rendering Contents Resolversを右クリックし、Insert、Rendering Contents Resolverの順にクリックします。
先端シリアル化を最適化するために、コンテンツ リゾルバーをフォルダーに整理できます。
-
MessageダイアログのNameフィールドにNavigation Resolverと入力し、OKをクリックします。
-
Navigation ResolverアイテムのContentタブのDataセクションのTypeフィールドに、コンテンツ リゾルバの名前を入力します。
-
コンテンツ リゾルバーがコンテンツ ツリー モデルを構築するときに、現在のアイテム (Sitecoreコンテキスト ページ/ルート) を基準にしてコンテンツ ツリーをナビゲートするようにするには、Use Context Itemを選択します。このチェック ボックスを選択しない場合、コンテンツ リゾルバーはそのデータ ソース アイテムを使用します。
-
コンテンツリゾルバー項目を保存します。
JSONレンダリング項目を作成する
JSONレンダリング項目を作成する
JSONレンダリング・アイテムは、コンテンツ・リゾルバー・クラス (コンテンツ・ツリー・オブジェクト) の出力を、レンダリング・ホストのJSON形式のデータとしてレンダリングします。
SitecoreインスタンスでJSONレンダリング アイテムを作成するには:
-
コンテンツ エディタで、/sitecore/Layout/Renderingsを右クリックし、Insert、Json Renderingの順にクリックします。
-
MessageダイアログのNameフィールドにNavigation Renderingと入力し、OKをクリックします。
-
Navigation Rendering項目のContentタブのLayout ServiceセクションのRendering Contents Resolverドロップダウン リストで、Navigation Resolver項目をクリックします。
-
JSONレンダリング アイテムを保存します。
可能であれば、コンテンツ リゾルバーを使用するレンダリングの出力キャッシュを構成します。これは、ナビゲーションなど、多くのアイテムにアクセスする必要があるレンダリングでは特に重要です。
JSONレンダリング項目をAppRouteテンプレートの標準値に追加します
JSONレンダリング項目をAppRouteテンプレートの標準値に追加します
JSONレンダリング項目をAppRouteテンプレートの標準値に追加すると、AppRouteテンプレートから継承するすべてのページにJSONレンダリングが含まれます。
JSONレンダリング アイテムをAppRouteテンプレートの標準値に追加するには、次のようにします。
-
コンテンツ エディターで、/sitecore/Templates/Project/MyProject/AppRoute/__Standard Valuesをクリックします。
-
Presentationタブで、「Details」をクリックします。
-
Layout DetailsダイアログのDefaultセクションで、「Edit」をクリックします。
-
Device Editorダイアログの「Layout」タブで、「Layouts/Project/MyProject/Main」を選択します。
-
Controlsタブで、「Add」をクリックします。
-
Select a Renderingダイアログで、「Renderings/Navigation Rendering」をクリックします。
-
Add to PlaceholderフィールドでMainをクリックし、Selectをクリックします。
-
Device Editorダイアログで、「OK」をクリックします。
-
Layout Detailsダイアログで、「OK」をクリックします。
コンテンツリゾルバーをテストする
コンテンツリゾルバーをテストする
モデル バインド ビューを開始する前に、Sitecoreレイアウト サービスのレンダリング ホストへの出力にコンテンツ リゾルバーのJSONレンダリングが含まれていることをテストしてください。
レンダリング エンジンの設定によっては、レンダリング ホスト ページにUnknown componentまたは同様のメッセージが出力される場合があります。これは完全に正常です。
このサンプルJSONレンダリングでは、ナビゲーション モデルを設定するために、コンテンツ ツリーにいくつかの項目を追加しました。
モデルの作成
モデルの作成
このモデルは、Sitecoreレイアウト サービスによって返されるコンテンツ リゾルバーのJSONレンダリングのデータにマップする、厳密に型指定されたクラスを提供します。
RenderingHostプロジェクトでモデルを作成するには:
-
Visual Studioのソリューション エクスプローラーで、RenderingHost/Modelsを右クリックし、Add、New Itemの順にクリックします。
-
Add New Itemウィンドウで、次の操作を行います。
-
左側のウィンドウで、Installed/Visual C#/ASP.NET Core/Codeをクリックします。
-
中央のウィンドウで、Classをクリックします。
-
下部のNameフィールドに「 NavigationModel.cs」と入力します。
-
「 Add」をクリックします。
-
-
クラスファイルで、JSONレンダリングをモデルにバインドするには、次の内容を追加します。
手記Sitecoreフィールドに直接バインドしないため、モデルでstringのような単純なタイプを使用できますが、それらを明示的に のSitecoreComponentFieldで属性付けする必要があります。
-
クラス・ファイルを保存します。
モデルバインド ビューを作成する
モデルバインド ビューを作成する
モデルバウンドビューは、モデルデータをHTMLとしてレンダリングします。
RenderingHostプロジェクトでモデルバインドビューを作成するには:
-
Visual Studioのソリューション エクスプローラーで、RenderingHost/Views/Shared/Components/SitecoreComponentを右クリックし、Add、New Itemの順にクリックします。
-
Add New Itemウィンドウで、次の操作を行います。
-
左側のウィンドウで、Installed/Visual C#/ASP.NET Core/Webをクリックします。
-
中央のウィンドウで、Razor Viewをクリックします。
-
下部のNameフィールドに「 Navigation Rendering.cshtml」と入力します。
大事なモデルバインド ビュー ファイルの名前がJSONレンダリングの名前と一致しない場合は、Unknown Componentエラーが発生します。
-
「 Add」をクリックします。
-
-
モデルバインド ビュー ファイルに、次の内容を追加します。
-
モデル境界ビュー ファイルを保存します。
モデルバインドビューを登録する
モデルバインドビューを登録する
Sitecoreレンダリング エンジンでは、モデル バインド ビューをレイアウト サービス コンポーネント名 (どちらもNavigation Renderingと呼ばれます) にマッピングする必要があります。
モデルバインドビューをStartupクラスに登録するには:
-
Visual Studioのソリューション エクスプローラーで、Startup.csファイルをダブルクリックします。
-
Startup.csファイルのservices.AddSitecoreRenderingEngine呼び出しで、モデル バインド ビューとモデルをレンダリング エンジン コンポーネントとしてAddModelBoundView() メソッドに登録します。
大事なモデルバインド ビュー ファイルの名前がJSONレンダリングの名前と一致しない場合は、Unknown Componentエラーが発生します。
-
Startup.csファイルを保存します。