CMS 13, предварительная версия 4 — Обновление с предварительной версии 3

Это третья статья в серии, в которой я использую шаблон Alloy в качестве справочного материала для ознакомления с каждым предварительным просмотром CMS 13. первый пост охватывает обновление CMS 12 до Preview 2, а также второй рассмотрел ключевые изменения в предварительной версии 3. Если вы следите за текстом, продолжайте с того места, на котором мы остановились.

Превью 4 вышло. Удалить пакет достаточно просто, но есть изменение API, связанное с тем, как вы разрешаете стартовую страницу, которое будет проходить через ваш код. Вот что нужно изменить и о чем стоит знать.

Шаг 1. Обновите пакеты

Увеличьте ссылки на ваши пакеты с предварительного просмотра 3 до предварительного просмотра 4:



Известная проблема: обновление схемы базы данных со старых версий CMS 12

Если вы обновляетесь непосредственно со старой версии CMS 12 (например, 12.34.1 или более ранней) до предварительной версии CMS 13, а не от предварительной версии3 (что предполагается в этой статье), миграция схемы базы данных может завершиться неудачно с ошибкой, например:

Column names in each table must be unique. Column name 'Failed' in table 'dbo.tblNotificationMessage' is specified more than once.

Это происходит потому, что определенные столбцы были добавлены в более поздних выпусках CMS 12, а сценарии миграции CMS 13 не проверяют, существуют ли они, прежде чем пытаться их добавить.

Обходной путь: сначала обновите CMS 12 до последней версии, чтобы схема базы данных была полностью актуальной, а затем обновите ее до предварительной версии CMS 13. Это гарантирует, что все изменения промежуточной схемы будут применены до запуска миграции CMS 13.

Шаг 2. Решение проблемы со стартовой страницей

В предварительной версии 3 шаблон Alloy разрешал стартовую страницу путем приведения к веб-сайту и доступа к RoutingEntryPoint. В предварительной версии 4 самый простой подход — напрямую использовать ContentReference.StartPage — в большинстве случаев нет необходимости использовать IApplicationResolver.

Read more:  ПРЯМОЙ ЭФИР - Бюджет-2026: Депутаты восстанавливают «налог на выход» в версии Саркози

До (превью 3)

var website = _applicationResolver.GetByContext() as Website;
var startPageContentLink = website?.RoutingEntryPoint;

После (превью 4)

var startPageContentLink = ContentReference.StartPage;

В шаблоне Alloy это упростило работу с несколькими файлами с помощью ContentReference.StartPage.
PageViewContextFactory.cs — СоздатьLayoutModel
ContentLocator.cs — Получитьконтактные страницы
Предварительный просмотрконтроллер.cs — действие Индекс
Стартпажеконтроллер.cs — действие Индекс
Хлебные крошки.cshtml и Заголовок.cshtml — то же изменение

Если вам нужен больший контроль, в качестве альтернативы по-прежнему доступен IRoutableApplication со свойством EntryPoint.

Миграция SiteDefinition продолжает совершенствоваться. Проблемы с подготовкой приложений по умолчанию и разрешением имен хостов между режимами предварительного просмотра и просмотра из более ранних предварительных версий были устранены.

Шаг 3. Интеграция DAM (необязательно)

В предварительной версии 4 добавлен новый пакет для интеграции Optimizely DAM. Важно отметить, что, хотя DAM является фундаментальной частью CMS 13, его можно использовать и без него. CMS по-прежнему может хранить ресурсы в традиционном смысле.

Подобно CMS 12, конфигурация DAM обрабатывается с использованием параметров, напрямую требующих создания приложения в CMP, из которого можно получить учетные данные для настройки в CMS. Вам также понадобится идентификатор единого входа, который можно найти в разделе НастройкиОрганизацияОсновные в ЧМП.

Интеграция DAM больше не взаимодействует напрямую с CMP REST API. Вместо этого он построен на внешних источниках, а это означает, что ресурсы DAM необходимо индексировать в экземпляре Optimizely Graph, подключенном к вашей CMS. Поэтому, прежде чем подключать приведенный ниже код, убедитесь, что у вас настроен Optimizely Graph, а затем обратитесь в службу поддержки Optimizely, чтобы подключить DAM к вашему экземпляру Graph. Шаги по подключению — выбор экземпляра DAM, активация типов активов — следуют тому же процессу, что и CMS SaaS, и описаны в Встроенное руководство по переходу от DAM к CMS. Обновленная документация, относящаяся к CMS 13, будет доступна после выпуска. Как только это будет сделано, Content Manager можно будет использовать для обнаружения и выбора ресурсов DAM непосредственно из пользовательского интерфейса редактирования.

Read more:  Как добавить несколько поставщиков аутентификации на сайт Optimizely CMS 12 (Entra ID, Google, Facebook и локальная идентификация) – PowerBuilder

Добавьте пакет:

Зарегистрируйте пользовательский интерфейс DAM в Startup.cs:

services.AddDamUI();

Добавьте пространство имен помощников HTML DAM в Views/_ViewImports.cshtml:

@using EPiServer.Cms.DamIntegration.UI.Helpers

Это дает вам доступ к таким помощникам, как RenderTagWithMetadata(…) для рендеринга ресурсов DAM. Обратите внимание, что помощник тега эпи-свойства, который вы уже используете, взят из EPiServer.Cms.AspNetCore.TagHelpers, который уже должен быть зарегистрирован в вашем _ViewImports.cshtml через @addTagHelper.

Затем настройте свои учетные данные CMP (обратите внимание, что они имеют значения по умолчанию, включенные здесь для прозрачности) в appsettings.json:

"Optimizely": {
  "Cms": {
    "DamUI": {
      "Endpoint": "https://cmp.optimizely.com",
      "SsoId": "",
      "NavigationUrl": "https://cmp.optimizely.com/cloud/library"
    }
  },
  "Cmp": {
    "Client": {
      "TokenUrl": "https://accounts.cmp.optimizely.com/o/oauth2/v1/token",
      "ApiUrl": "https://api.cmp.optimizely.com/v3/",
      "ClientId": "",
      "ClientSecret": ""
    }
  }
}

Средство выбора DAM теперь также поддерживает множественный выбор, что является хорошим улучшением для редакторов, работающих с большим количеством медиафайлов.

Переход с интеграции CMS 12 DAM

Для общедоступной версии CMS 13 будет доступен автономный пакет миграции, который преобразует интеграцию DAM в стиле CMS 12 в новую. Этот пакет будет обрабатывать миграцию существующих ссылок на активы DAM, чтобы они работали с новым пакетом EPiServer.Cms.DamIntegration.UI.

Первая версия пакета миграции будет поддерживать:
– Свойства ContentReference
– IList характеристики

Поддержка дополнительных типов свойств будет добавлена в будущих выпусках.

Использование ресурсов DAM в вашем контенте

Чтобы использовать ресурсы DAM на странице, добавьте свойство ContentReference с подсказкой UIHint.Image:

using EPiServer.Web;
using System.ComponentModel.DataAnnotations;

public class DamExamplePage : StandardPage
{
    [Display(GroupName = Globals.GroupNames.Content)]
    [UIHint(UIHint.Image)]
    public virtual ContentReference Image { get; set; }
}

В представлении визуализируйте его с помощью вспомогательного тега epi-property — тот же шаблон, что и любое другое свойство CMS:

Шаг 4. Аудитории (необязательно)

Аудитории представляют собой отдельный пакет в CMS 13. Если вы использовали Services.AddVisitorGroups() в предварительной версии 3, вам необходимо добавить новый пакет NuGet и обновить регистрацию службы.

Read more:  Трамп обрезает информацию о насилии с оружием, повара полиции доставили

Добавьте пакет:

Затем обновите Startup.cs — старый вызов AddVisitorGroups() заменяется двумя отдельными регистрациями:

using EPiServer.Cms.UI.VisitorGroups;
services.AddVisitorGroupsMvc().AddVisitorGroupsUI();

Также было исправлено несколько ошибок, связанных с аудиторией: ошибка «политика не найдена», критерии географического местоположения работают, а расположение контекстного меню для персонализированных групп исправлено.

Что еще нового в предварительной версии 4

Несколько вещей, о которых стоит знать помимо этапов обновления:

Граф .NET SDK

Появился новый .NET SDK для Optimizely Graph с гибким API, охватывающим фасеты, кэширование, аутентификацию, отслеживание и сопоставление полей объекта с графиком. В ContentGraph.CMS также были добавлены точки расширения, чтобы вы могли подключиться к конвейеру индексирования.

Улучшенная миграция из SiteDefinition

Улучшен переход от SiteDefinition к модели приложения. Создание незавершенных веб-сайтов с помощью пользовательского интерфейса настроек снова работает, а типизированные типы контента теперь отображаются правильно при выборе стартовой страницы приложения.

Полный список изменений можно найти в официальных примечаниях к выпуску.

20 марта 2026 г.

Ещё по этой теме

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.