簡體   English   中英

默認情況下,如何配置EXM以使用自定義語言版本創建新郵件

[英]How to configure EXM to create new messages with a custom language version, as default

我正在嘗試為奧地利網站配置EXM根目錄,以使用de-AT語言版本創建新消息,並將de-AT語言選為默認語言。

我的問題是:如何在創建新消息時將EXM配置為自動為de-AT創建語言版本?

到目前為止我做了什么..

我設法通過使用語言自動選擇de-AT -標准字段消息上下文部分選擇目標語言 字段 - 但是創建的實際消息項不包含de-AT版本 -我試圖保存郵件時收到錯誤。

在此輸入圖像描述

錯誤消息: 找不到編輯語言版本“德語(奧地利)”。 它可能已被其他用戶刪除。

正如在這個screnshot中可以看到的,當我打開EXM並創建新消息時,將自動選擇de-AT語言版本。 問題是該消息沒有分配de-AT語言版本,因此它不允許保存該項目。

在此輸入圖像描述

在此輸入圖像描述

我想您錯過了將語言版本添加到消息模板的標准值。 消息版本

EXM中的模板與Sitecore中的任何位置的工作方式相同。 您的電子郵件應具有以下語言版本:

  • / sitecore / templates / Email Campaign / Messages
  • / sitecore / templates / Branches / Email Campaign / Messages

在EXM中創建新消息時,沒有任何“技巧”能夠自動添加新的語言版本,因此我添加了一個新的OnItemSave事件,該事件檢查Item是否派生自基本Message模板並創建新的語言版本 - 基於自己的業務邏輯。

配置:

<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
                }
            }
        }

    }

}

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM