Home » Копирование встроенных блоков при переводе страниц

Копирование встроенных блоков при переводе страниц

Несколько версий назад в Optimizely CMS добавлено встроенные блоки функциональность. Это очень полезная функция, которая позволяет редактору создавать динамические страницы с использованием ContentArea. Цикл публикации блоков привязан к странице, на которой они используются, поэтому редактирование стало очень простым. В этой статье я хотел описать небольшое улучшение, которое упрощает работу с языковыми версиями. Расширение позволяет копировать встроенные блоки при переводе страниц.

Встроенные блоки работают только с ContentAreas, имеющими значение CultureSpecific. Это означает, что при создании языковой версии вы добавляете страницу, содержащую пустое свойство ContentArea. В результате редактору приходится вручную пересоздавать все блоки, а не просто менять некоторые тексты в свойствах блоков. Дополнение позволяет создавать копии всех встроенных блоков, используемых в ContentArea при переводе страницы.

Например, у нас есть StandardPage со свойством LocalizableContentArea, специфичным для культуры.

Мы создаем новую страницу на английском языке (который является основным языком), добавляем два встроенных блока в LocalizableContentArea и публикуем страницу.

ContentArea со встроенными блоками

После перевода страницы на другой язык мы получаем пустое свойство ContentArea.

Пустая область содержимого

При использовании расширенного кода и переводе страницы мы сначала получаем диалог с вопросом о том, как следует обрабатывать встроенные блоки в ContentArea. Мы можем выбрать либо «Игнорировать» и не копировать блоки (поведение CMS по умолчанию), либо «Преобразовать» блоки и добавлять их на переведенную страницу.

Копирование встроенных блоков при переводе страниц

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

Read more:  Какой будет следующий самый опасный вирус

Выполнение

Копирование встроенных блоков осуществляется путем расширения IContentChangeManager Метод CreateLanguageBranch. После перевода страницы загружается версия контента на основном языке, встроенные блоки копируются, а затем сохраняется текущая версия страницы.

Код ищет встроенные блоки, которые можно локализовать в ContentAreas, и копирует их один за другим.

На стороне клиента загружаются метаданные содержимого основного языка, чтобы проверить, содержит ли контент встроенные блоки, и если это правда, то отображается диалоговое окно.

Код доступен как суть Github

Leave a Comment

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