Sitecoreレンダリング エンジン

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

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

Sitecoreレンダリング エンジンは、Sitecoreレイアウト サービスを使用してSitecoreインスタンスからフェッチされたコンテンツをレンダリングします。アプリケーションでレンダリングエンジンを使用するには、いくつかの構成を実行する必要があります。この構成のほとんどは、Startupクラスで行われます。 ASP.NET Coreでのアプリの起動に関するMicrosoftのドキュメントを参照してください。

レンダリング エンジン ライブラリはNuGetパッケージとして使用でき、名前の先頭にはSitecore.AspNet.RenderingEngineが付きます。

レンダリングエンジンサービスの登録

必要なSitecoreレンダリング エンジン サービスを依存関係挿入コンテナーに追加するには、ASP.NET StartupクラスのConfigureServices() メソッドでSitecore.AspNet.RenderingEngine.Extensions名前空間のAddSitecoreRenderingEngine()拡張メソッドを使用します。

このメソッドは、次のような他の拡張メソッドを使用してレンダリングエンジンをさらに構成できるようにするためのISitecoreRenderingEngineBuilderインスタンスを返します。

RequestResponse
public void ConfigureServices(IServiceCollection services)
{
    var renderingEngineBuilder = services.AddSitecoreRenderingEngine();
}

AddSitecoreRenderingEngine()メソッドは、レンダリングエンジンオプションの設定を可能にするAction<RenderingEngineOptions>パラメータを受け入れます。

RenderingEngineOptionsパラメーターを使用すると、次の構成をクラス プロパティとして公開できます。

  • ICollection<Action<HttpRequest, SitecoreLayoutRequest>> RequestMappings - 現在のHttpRequestSitecoreLayoutRequestの間のマッピングのリストを指定できます。

    デフォルトのマッピングでは、次のものが設定されます。

    • IRequestCultureFeature内のRequestCulture.Culture.NameからのSitecoreLayoutRequest上のLanguage(存在する場合)。

    • sitecoreRouteルート値からのSitecoreLayoutRequest上のPath(存在する場合)。

    • HttpRequest.Path値からのPath(sitecoreRouteルート値がnot存在する場合)。

    メモ

    デフォルトのマッピングはMapSitecoreLocalizedRoute拡張機能でサポートされており、MVCエンドポイント (app.UseEndpoints) を設定するときに使用できます。

    リストにマッピングを追加するには、Sitecore.AspNet.RenderingEngine.Extensions名前空間で使用できるMapToRequest()拡張メソッドを使用します。次の例は、現在のHttpRequestlangクエリ文字列値をレイアウトサービスに送信されるSitecoreLayoutRequestの言語値にマッピングすることで、このメソッドを使用する方法を示しています。

    RequestResponse
    public void ConfigureServices(IServiceCollection services)
    {
        var renderingEngineBuilder = services.AddSitecoreRenderingEngine(
            options => options.MapToRequest(
                (httpRequest, sitecoreLayoutRequest) => sitecoreLayoutRequest.Language(httpRequest.Query["lang"]))
        );
    }
  • SortedList<int, ComponentRendererDescriptor> RendererRegistry- コンポーネントレンダラーのソートされたリスト。デフォルトでは、このリストは空です。

    レンダリングエンジンには、デフォルトでいくつかのコンポーネントレンダラーが用意されています。たとえば、ビュー コンポーネントとパーシャル ビュー レンダラーがあります。

    レンダリングエンジンでは、コンポーネントレンダラーの設定に役立つ次の拡張方法を使用できます。

    • AddViewComponent()- Sitecoreレイアウト コンポーネント名をビュー コンポーネントのレンダリングにマッピングします。マッピング プロセスでは、大文字と小文字は区別されません。

    • AddModelBoundView<TModel>()- Sitecoreレイアウト コンポーネント名をデフォルトのビュー コンポーネント レンダリングにマッピングし、デフォルトのSitecoreビュー コンポーネントを使用してモデル バインドします。マッピング プロセスでは、大文字と小文字は区別されません。

    • AddPartialView()- Sitecoreレイアウト コンポーネント名をパーシャル ビュー レンダリングにマップします。

    • AddDefaultPartialView()- 一致しないSitecoreレイアウト コンポーネントをデフォルトの部分ビューにマッピングします。

    ビュー コンポーネント、モデル バインド ビュー、およびパーシャル ビューの使用の詳細については、ビュー タイプ を参照してください。

  • ComponentRendererDescriptor? DefaultRenderer- これは、Sitecoreコンポーネントのレンダリングを処理するためのデフォルトのコンポーネント レンダラー記述子オブジェクトです。デフォルトでは、これはnullです。

    AddDefaultComponentRenderer()拡張メソッドを使用して、RenderingEngineOptionsDefaultRendererを設定します。デフォルトのレンダラーは、HTML出力を生成する代わりに、Sitecoreコンポーネントのコンテンツを指定されたログに書き込むLoggingComponentRendererです。これは、次のようなアプリケーションのテストに役立ちます。

    RequestResponse
    public void ConfigureServices(IServiceCollection services)
    {
        var renderingEngineBuilder = services.AddSitecoreRenderingEngine(options =>
              options
    
                // Map Partials
                .AddPartialView("HeaderBlock", "_HeaderBlock")
                .AddPartialView(name => name.StartsWith("sc"), "_OtherBlock")
    
                // Map View Components
                .AddModelBoundView<BoundContentBlock>("ContentBlock")
                .AddViewComponent("Styleguide-Layout", "StyleguideLayout")
                .AddViewComponent(name => name.StartsWith("sc"), "Other")
    
                // Add fallback for any other component
                .AddDefaultPartialView("_ComponentNotFound");
        );
    }

レンダリングエンジンでのエンドポイントとコントローラーの使用

コンテンツ駆動型のSitecoreサイトを作成する場合、Sitecoreコンテンツ ツリーは通常、ルーティングowns 、つまり、Sitecore URLはコンテンツ ツリーの構造によって駆動されます。Sitecore URLは、次のいずれかの形式をすぐに使用できます。

  • Language付き -/language ISO/path/to/the/page

  • Languageなし-/path/to/the/page

サイトが多言語の場合は、リクエストのローカリゼーションも構成する必要があります。その後、MapSitecoreLocalizedRoute拡張機能を使用して、Sitecoreスタイルの言語埋め込みとコンテンツ パスをサポートするルートを設定できます。言語を使用しないパスをサポートするために、組み込みのASP.NETMapFallbackToControllerをSitecoreコンテンツ パスを処理するcatch allとして使用できます。

多言語サイトは通常、言語の埋め込みとコンテンツ パスの両方を処理しますが、Sitecoreリンク プロバイダーが常に言語を埋め込むように明示的に設定されていない限り。

DefaultコントローラーのIndexアクションにマッピングされたSitecoreルートの例:

RequestResponse
app.UseEndpoints(endpoints => 
{ 
  endpoints.MapSitecoreLocalizedRoute("Localized", "Index", "Default"); 
  endpoints.MapFallbackToController("Index", "Default"); 
}); 
手記

Sitecore以外のルートのエンドポイントは、Sitecoreエンドポイントの前に追加できます。

IndexアクションにUseSitecoreRendering属性 (Sitecore.AspNet.RenderingEngine.Filters名前空間で利用可能) をタグ付けして、Sitecoreレンダリング ミドルウェアと対応するレイアウト サービスへのリクエストを有効にしてください。

RequestResponse
public class DefaultController : Controller 
{ 
  [UseSitecoreRendering] 
  public IActionResult Index(Route route) 
  { 
    return View(route); 
  } 
} 
手記

この属性は、コントローラー自体にも適用できます。

何かフィードバックはありますか?

この記事を改善するための提案がある場合は、