Commerce Search結果のMVCビュー

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

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

MVC(モデルビューコントローラ)モデルでは、HTTPリクエストを解析するコード(ルート)がモデル(オブジェクト)を生成するコントローラ(.NETコード)を指しています。このオブジェクトはビュー(SXAストアフロントのRazorビュー)によって解析されます。ビューはデータの表示方法を決定するプレゼンテーションコンポーネントで構成されています。

The MVC view

!注Commerce Search Results MVCビュー は必要に応じてカスタマイズ可能です。詳細については、「 デフォルトのレンダリングビュープロバイダーをオーバーライド」 および 「サイトごとのレンダリングHTMLカスタマイズ」をご覧ください。

Commerce Search Results MVCビューは /views/Commerce/CommerceSearchResultsの下にある独立したフォルダに格納されています。Commerce Search Results MVCビューの構造は以下の通りです:

/* Reference the model containing all the catalog content but excluding price and stock info */ @model Sitecore.XA.Feature.Search.Models.SearchResultsRenderingModel

@{ /* SXA handling of the data class variant attribute */ string variantClass = string.Empty; if (Model.Attributes.ContainsKey("class")) { variantClass = Model.Attributes"class".Aggregate(); }

/* Get a handle to the storefront context */ var storefrontContext = ServiceLocator.ServiceProvider.GetRequiredService(); }

/* Component enclosing markup, including data properties specifying the search service endpoint and parameters as JSON */

/* Label translations originating from storefront Commerce Terms in Commerce Control Panel. Included as hidden markup as Scriban template cannot get a reference to it with the standard extension methods */ @Html.Hidden("InStockDisplayName", storefrontContext.GetProductStockStatusName(CatalogFeatureConstants.InventoryStatuses.InStock)) @Html.Hidden("OutOfStockDisplayName", storefrontContext.GetProductStockStatusName(CatalogFeatureConstants.InventoryStatuses.OutOfStock)) @Html.Hidden("BackOrderableDisplayName", storefrontContext.GetProductStockStatusName(CatalogFeatureConstants.InventoryStatuses.BackOrderable)) @Html.Hidden("PreOrderableDisplayName", storefrontContext.GetProductStockStatusName(CatalogFeatureConstants.InventoryStatuses.PreOrderable))

/* When exporting markup using Creative Exchange, show 'Results not found' output */ @if (WebUtil.GetQueryString(Sitecore.XA.Feature.Search.Constants.CreativeExchangeExport) != "true") {

@Model.MessageIsEmpty
@Html.Sxa().Field("ResultsNotFoundText", Model.DataSourceItem, !Model.IsControlEditable) @Html.Sxa().Field("Text", Model.Item, !Model.IsControlEditable)
} else { /\* Product cards are rendered using unordered lists HTML as markup \*/
  • /\* Loop processing the content of the rendering variant against the model and current item \*/ @foreach (BaseVariantField variantField in Model.VariantFields) { @Html.RenderingVariants().RenderVariant(variantField, Model.PageItem, false, Model) }
}
@using System.Web.Mvc.Html @using Microsoft.Extensions.DependencyInjection @using Sitecore.Commerce.XA.Feature.Catalog @using Sitecore.Commerce.XA.Foundation.Common.Context @using Sitecore.DependencyInjection @using Sitecore.Web @using Sitecore.XA.Foundation.MarkupDecorator.Extensions @using Sitecore.XA.Foundation.RenderingVariants.Extensions @using Sitecore.XA.Foundation.SitecoreExtensions.Extensions @using Sitecore.XA.Foundation.Variants.Abstractions.Fields

@model Sitecore.XA.Feature.Search.Models.SearchResultsRenderingModel

@{ string variantClass = string.Empty; if (Model.Attributes.ContainsKey("class")) { variantClass = Model.Attributes"class".Aggregate(); } var storefrontContext = ServiceLocator.ServiceProvider.GetRequiredService(); }

@Html.Hidden("InStockDisplayName", storefrontContext.GetProductStockStatusName(CatalogFeatureConstants.InventoryStatuses.InStock)) @Html.Hidden("OutOfStockDisplayName", storefrontContext.GetProductStockStatusName(CatalogFeatureConstants.InventoryStatuses.OutOfStock)) @Html.Hidden("BackOrderableDisplayName", storefrontContext.GetProductStockStatusName(CatalogFeatureConstants.InventoryStatuses.BackOrderable)) @Html.Hidden("PreOrderableDisplayName", storefrontContext.GetProductStockStatusName(CatalogFeatureConstants.InventoryStatuses.PreOrderable))

@if (WebUtil.GetQueryString(Sitecore.XA.Feature.Search.Constants.CreativeExchangeExport) != "true") {

@Model.MessageIsEmpty
@Html.Sxa().Field("ResultsNotFoundText", Model.DataSourceItem, !Model.IsControlEditable) @Html.Sxa().Field("Text", Model.Item, !Model.IsControlEditable)
} else {
  • @foreach (BaseVariantField variantField in Model.VariantFields) { @Html.RenderingVariants().RenderVariant(variantField, Model.PageItem, false, Model) }
}

以下は、レンダリングがストアフロントサイト上で稼働している際の囲みマークアップの例です:

An example of the enclosing markup for the rendering
この記事を改善するための提案がある場合は、 お知らせください!