Как настроить EXM для создания новых сообщений с языковой версией по умолчанию, по умолчанию

Я пытаюсь настроить корень EXM для австрийского веб-сайта, чтобы создавать новые сообщения с языковой версией de-AT и выбирать язык де-AT по умолчанию.

У меня вопрос: как я могу настроить EXM для автоматического создания языковой версии для de-AT при создании нового сообщения?

Что я сделал до сих пор..

Мне удалось добиться автоматического выбора de-AT, поиграв с языком - Выберите поле целевого языка в разделе " Контекст сообщения " в полях "Стандарт" - но созданный элемент сообщения не содержит версию de-AT - и я получаю сообщение об ошибке при попытке сохранить сообщение.

Сообщение об ошибке: не найдена отредактированная языковая версия "German (Austria)". Возможно, он был удален другим пользователем.

Как видно из этого снимка экрана, когда я открываю EXM и создаю новое сообщение, автоматически выбирается версия языка de-AT. Проблема в том, что для сообщения не назначена языковая версия de-AT, поэтому он не позволит сохранить элемент.

2 ответа

Я думаю, что вы пропустили добавление языковой версии к стандартным значениям вашего шаблона сообщения. версия сообщения

Шаблоны в EXM работают так же, как и везде в Sitecore. У вас должны быть языковые версии для ваших писем:

  • / sitecore / templates / Email Campaign / Сообщения
  • / sitecore / templates / Филиалы / Кампания по электронной почте / Сообщения

Ни одна из "хитростей" не сработала для автоматического добавления новой языковой версии при создании нового сообщения в EXM, поэтому я добавил новую OnItemSave событие, которое проверяет, получен ли Элемент из базового шаблона сообщения и создает новую языковую версию - на основе собственной бизнес-логики.

Config:

<configuration xmlns:x="http://www.sitecore.net/xmlconfig/">
<sitecore> 
 <events>
  <event name="item:added"> 
    <handler type="ABC.SitecoreExtensions.Handlers.EmailExperienceExtensions, ABC" method="OnItemAdded" />
  </event> 
</events> 
</sitecore>

Код

namespace ABC.SitecoreExtensions.Handlers
{
  class EmailExperienceExtensions
  {
    readonly Sitecore.Data.Database masterDb = Sitecore.Configuration.Factory.GetDatabase("master"); 
    private const string EXM_BASE_EMAIL_TEMPLATE_ID = "{A0EA9681-5C86-43AB-80F7-C522DADF6F12}";


    public void OnItemAdded(object sender, EventArgs args)
    {
        Assert.ArgumentNotNull((object)args, "args");
        Item obj1 = Event.ExtractParameter(args, 0) as Item;
        if (obj1 == null)
            return;

        if (obj1.IsDerived(new Sitecore.Data.ID(EXM_BASE_EMAIL_TEMPLATE_ID )))
        {
            //logic to determine the context site and to pickup the language
            ....

            if (rootItem == null)
            {
                return;
            }

            var siteContext = SiteContext.GetSite(rootItem.Name);
            var lang = LanguageManager.GetLanguage(siteContext.Language);

            Item ca = masterDb.GetItem(obj1.Paths.FullPath, lang);
            using (new Sitecore.SecurityModel.SecurityDisabler())
            {
                try
                {
                    if (0 == ca.Versions.Count)
                    {
                        ca.Versions.AddVersion();
                    }
                }
                catch (Exception ex)
                {
                   // catch exception
                }
            }
        }

    }

}

}

Другие вопросы по тегам