チュートリアル: コンテンツ リゾルバーをレンダリングするモデルバインド ビューの作成
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
September 2024より前にASP.NET Coreアプリを統合した場合は、従来の ASP.NET CoreレンダリングSDKバージョン22以前が使用されています。このSDKは更新プログラムを受け取らなくなったため、新しい ASP.NET Core 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.RenderingContentsResolver0クラスが含まれています。
Sitecore.LayoutService NuGetパッケージをPlatformプロジェクトに追加するには、次のようにします。
-
Visual StudioのSolution Explorerで、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のSolution Explorerで、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のSolution Explorerで、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 Queryや、可能な限りコンテンツ ツリーをナビゲートする他のリソースを大量に消費する方法の代わりに、Sitecore Content Searchを使用します。
コンテンツ リゾルバー項目を作成する
コンテンツ リゾルバー項目を作成する
コンテンツ リゾルバー アイテムは、コンテンツ リゾルバー クラスを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テンプレートの標準値に追加します
AppRouteテンプレートの標準値にJSONレンダリング項目を追加すると、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のSolution Explorerで、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のSolution Explorerで、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のSolution Explorerで、Startup.csファイルをダブルクリックします。
-
Startup.csファイルのservices.AddSitecoreRenderingEngine呼び出しで、モデル バインド ビューとモデルをレンダリング エンジン コンポーネントとしてAddModelBoundView() メソッドに登録します。
大事なモデルバインド ビュー ファイルの名前がJSONレンダリングの名前と一致しない場合は、Unknown Componentエラーが発生します。
-
Startup.csファイルを保存します。