日本語版
最新ニュース
企業

Optimizely OMVP の 1 日: Optimizely の移行

Optimizely CMS 13 がプレビューで利用可能になったため、拡張機能の開発者は、パッケージを新しいバージョンと互換性を持たせるためにどのような変更が必要かを理解する必要があります。この投稿では、移行のために行った具体的な変更について説明します。 OptiGraphExtensions - Optimizely Graph 内で同義語、ピン留めされた結果、Webhook、およびカスタム データ ソースを管理するための Optimizely CMS アドオン。 CMS 13 の変更点の概要 技術的な詳細に入る前に、この移行の範囲を理解しておく価値があります。 CMS 11 から CMS 12 への大規模なアップグレード (.NET Framework から .NET への移行を伴う) とは異なり、CMS 12 から CMS 13 への移行はかなり簡単です。主な変更点は次のとおりです。 .NET 10の要件 -…

Optimizely OMVP の 1 日: Optimizely の移行

1769553043
2026-01-26 20:00:00

Optimizely CMS 13 がプレビューで利用可能になったため、拡張機能の開発者は、パッケージを新しいバージョンと互換性を持たせるためにどのような変更が必要かを理解する必要があります。この投稿では、移行のために行った具体的な変更について説明します。 OptiGraphExtensions – Optimizely Graph 内で同義語、ピン留めされた結果、Webhook、およびカスタム データ ソースを管理するための Optimizely CMS アドオン。

CMS 13 の変更点の概要

技術的な詳細に入る前に、この移行の範囲を理解しておく価値があります。 CMS 11 から CMS 12 への大規模なアップグレード (.NET Framework から .NET への移行を伴う) とは異なり、CMS 12 から CMS 13 への移行はかなり簡単です。主な変更点は次のとおりです。

  • .NET 10の要件 – CMS 13 は .NET 10 をターゲットとします
  • 非推奨の API – いくつかのレガシー API は廃止済みとマークされています
  • 新しいアプリケーションモデル – SiteDefinition は、より柔軟なアプリケーション構成に置き換えられます。
  • シェル UI タグ ヘルパー – 新しい 要素は従来のナビゲーション ヘルパーを置き換えます

ステップ 1: ターゲット フレームワークを更新する

最初の最も基本的な変更は、ターゲット フレームワークを .NET 8 から .NET 10 に更新することです。

以前 (CMS 12):

net8.0

後 (CMS 13):

net10.0

ステップ 2: NuGet パッケージ参照を更新する

すべての Optimizely パッケージをバージョン 13.x に更新する必要があります。メインの拡張プロジェクトでの変更点は次のとおりです。

以前 (CMS 12):




後 (CMS 13):




サンプル CMS サイトには、追加のパッケージが必要です。






ステップ 3: global.json を更新する

ソリューションで グローバル.json ファイルを使用して SDK バージョンを固定し、.NET 10 に更新します。

{
  "sdk": {
    "version": "10.0.102",
    "rollForward": "latestMinor"
  }
}

ステップ 4: 非推奨の API を処理する

CMS 13 では、拡張機能で一般的に使用されていたいくつかの API が廃止されます。何を探すべきか、そしてそれらを修正する方法は次のとおりです。

ページ参照 → コンテンツ参照

拡張機能が使用している場合 ページ参照に置き換えてください コンテンツリファレンス:

// Before
PageReference pageRef = new PageReference(123);

// After
ContentReference contentRef = new ContentReference(123);

PageData.PageLink → ContentLink

// Before
var link = pageData.PageLink;

// After
var link = pageData.ContentLink;

IContentTypeRepository 汎用パラメータ

ジェネリック引数はから削除されました IContentTypeRepository:

// Before
IContentTypeRepository _pageTypeRepository;

// After
IContentTypeRepository _contentTypeRepository;

サービス拠点の変更

サービスの場所 InitializationEngine.Locate そして context.Locate.Advanced.GetInstance() 今では廃止されました。コンストラクターインジェクションを使用する Iサービスプロバイダー その代わり:

// Before (obsolete)
var myService = context.Locate.Advanced.GetInstance();

// After (preferred)
public class MyClass
{
    private readonly IMyService _myService;

    public MyClass(IServiceProvider serviceProvider)
    {
        _myService = serviceProvider.GetRequiredService();
    }
}

ヒント: IDE でコンパイラ警告を確認してください。コードベースでの非推奨の API の使用方法がすべて案内されます。

ステップ 5: スタートアップ構成を更新する

CMS 13 では、いくつかの追加構成が必要です。 スタートアップ.cs:

訪問者グループのサポートの追加

services.AddCmsAspNetIdentity()
        .AddCms()
        .AddAdminUserRegistration(x => x.Behavior = RegisterAdminUserBehaviors.Enabled | RegisterAdminUserBehaviors.LocalRequestsOnly)
        .AddVisitorGroups()  // Required in CMS 13
        .AddEmbeddedLocalization();

データベース互換性の構成

services.Configure(options =>
{
    options.UpdateDatabaseCompatibilityLevel = true;
});

ステップ 6: Blazor コンポーネントの変更を処理する (.NET 10)

拡張機能が Blazor コンポーネントを使用する場合 (OptiGraphExtensions のように)、使用するプロジェクトのプロパティにこのプロパティを追加する必要がある場合があります。 .csproj:


true

これにより、参照される Razor クラス ライブラリの静的 Web アセットが適切に含まれるようになります。

ステップ 7: 新しいシェル UI タグ ヘルパーを使用して管理レイアウト ページを更新する

CMS 13 では、タグ ヘルパーを使用して管理ページを Optimizely Shell ナビゲーションと統合する新しい方法が導入されています。拡張機能にカスタム管理ページがある場合は、レイアウト ファイルを更新する必要があります。

EPiServer.Shell.UI タグ ヘルパーを追加する

管理レイアウト ファイル (例: _LayoutBlazorAdminPage.cshtml)、新しいタグ ヘルパー参照を追加します。

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, EPiServer.Shell.UI

EPiServer.Shell.UI タグ ヘルパー ライブラリは、CMS シェルと統合するための新しいカスタム要素を提供します。

ナビゲーション ヘルパー メソッドをプラットフォーム ナビゲーション要素に置き換える

以前 (CMS 12):

@Html.CreatePlatformNavigationMenu()

@RenderBody()

後 (CMS 13):


@RenderBody()

新しい 要素は、Optimizely プラットフォームのナビゲーション バーをレンダリングするタグ ヘルパーです。注意すべき重要な点:

  1. 固定位置 要素はページの上部に固定ナビゲーション バーを作成します
  2. コンテンツオフセットが必要です – 追加する必要があります パディングトップ: 56px コンテンツ ラッパー (または同様のもの) をコンテンツ ラッパーに追加して、コンテンツ ラッパーが固定ナビゲーションの背後に隠れないようにします。
  3. スクロールの修正 – シェル CSS が設定する場合があります オーバーフロー: 非表示 ボディにあるため、これをオーバーライドする必要がある場合があります。
html, body {
    overflow: auto !important;
    height: auto !important;
}

完全なレイアウトの例

CMS 13 と互換性のある管理レイアウトの完全な例を次に示します。

@using EPiServer.Framework.Web.Resources
@using EPiServer.Shell.Navigation
@using EPiServer.Shell.UI.Helpers.Internal

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, EPiServer.Shell.UI




    My Extension

    
    @ClientResources.RenderResources("ShellCore")
    @ClientResources.RenderResources("ShellCoreLightTheme")

    

    


    @Html.AntiForgeryToken()
    
    

@RenderBody()

執筆者について: nipponese

Nipponese News編集部は、国内外のニュースを日本語で分かりやすくお届けします。