1. コンポーネント

バリアントを含むレンダリングを構築する

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

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

バリアントを含む新しいレンダリングを作成するには、カスタム レンダリングを作成しますが、コントローラーとリポジトリに異なる基本クラスを使用します。

サイトのPresentationフォルダーでは、エクスペリエンス エディターのツールボックスに表示するレンダリングを設定できます。新しいカスタム レンダリングをそのレンダリング バリアントと共に使用できるようにするには、Available RenderingsフォルダとRenderingVariantsフォルダの両方にまったく同じ名前を使用してアイテムを作成する必要があります。

このトピックでは、コントローラー、リポジトリ、モデル、およびビュー クラスのバリアントを含むレンダリングのコードに必要な変更について説明します。

コントローラ

SXAの基本構造を使用して新しいレンダリングを作成した後、コントローラーを作成する必要があります。バリアントを含むレンダリングの場合、コントローラはStandardControllerクラスから継承するのではなく、VariantsController.

たとえば、PageTitleというカスタム レンダリングの場合、コントローラーは次のようになります。

using PageTitle.Repositories;
using Sitecore.XA.Foundation.RenderingVariants.Controllers;
namespace PageTitle.Controllers
{
    public class PageTitleController : VariantsController
    {
        protected readonly IPageTitleRepository PageTitleRepository;
        public PageTitleController(IPageTitleRepository pageTitleRepository)
        {
            PageTitleRepository = pageTitleRepository;
        }
        protected override object GetModel()
        {
            return PageTitleRepository.GetModel();
        }
    }

リポジトリ

VariantsControllerは、VariantsRepository:

using PageTitle.Models;
using Sitecore.XA.Foundation.Mvc.Repositories.Base;
using Sitecore.XA.Foundation.RenderingVariants.Repositories;
namespace PageTitle.Repositories
{
    public class PageTitleRepository: VariantsRepository, IPageTitleRepository
    {
        public override IRenderingModelBase GetModel()
        {
            PageTitleModel model = new PageTitleModel();
            FillBaseProperties(model);
            model.CustomProperty = "This is just an example rendering";
            return model;
        }
    } 

モデル

新しいレンダリングのモデルクラスは、VariantsRenderingModel:

using Sitecore.XA.Foundation.Variants.Abstractions.Models;
namespace PageTitle.Models
{
    public class PageTitleModel: VariantsRenderingModel
    {
        public string CustomProperty { get; set; }
    }

眺める

ビュー レンダリングcshtmlファイルでHTMLマークアップを生成するには、モデルのアイテム プロパティを反復処理します。

例えば:

@using Sitecore.Extensions
@using Sitecore.XA.Foundation.MarkupDecorator.Extensions
@using Sitecore.XA.Foundation.SitecoreExtensions.Extensions
@using Sitecore.XA.Foundation.RenderingVariants.Extensions
@using Sitecore.XA.Foundation.RenderingVariants.Fields
@using Sitecore.XA.Foundation.Variants.Abstractions.Fields
@model PageTitle.Models.PageTitleModel
<div @Html.Sxa().Component("page-title", Model.Attributes)>
    <div class="component-content">
        <h1>@Model.CustomProperty</h1>
        @foreach (BaseVariantField variantField in Model.VariantFields)
        {
            @Html.RenderingVariants().RenderVariant(variantField, Model.Item, Model.RenderingWebEditingParams)
        }
    </div>
</div>
この記事を改善するための提案がある場合は、 お知らせください!