Sitecore 如何将EXM配置为默认使用自定义语言版本创建新邮件

Sitecore 如何将EXM配置为默认使用自定义语言版本创建新邮件,sitecore,sitecore8.1,sitecore-ecm,sitecore-exm,Sitecore,Sitecore8.1,Sitecore Ecm,Sitecore Exm,我正在尝试为奥地利网站配置EXM根目录,以使用de AT语言版本创建新邮件,并将de AT语言选择为默认语言 我的问题是:如何配置EXM在创建新邮件时自动为de创建语言版本 我到目前为止所做的。 通过使用语言,我成功地实现了自动选择de AT-从标准字段的消息上下文部分选择目标语言字段-但是创建的实际消息项不包含de AT版本-并且我在尝试保存消息 错误消息:找不到已编辑的语言版本“德语(奥地利)”。它可能已被其他用户删除 正如在本屏幕截图中所示,当我打开EXM并创建新消息时,会自动选择de

我正在尝试为奥地利网站配置EXM根目录,以使用de AT语言版本创建新邮件,并将de AT语言选择为默认语言

我的问题是:如何配置EXM在创建新邮件时自动为de创建语言版本

我到目前为止所做的。

通过使用语言,我成功地实现了自动选择de AT-从标准字段的消息上下文部分选择目标语言字段-但是创建的实际消息项不包含de AT版本-并且我在尝试保存消息

错误消息:找不到已编辑的语言版本“德语(奥地利)”。它可能已被其他用户删除

正如在本屏幕截图中所示,当我打开EXM并创建新消息时,会自动选择de AT语言版本。问题是消息没有指定de AT语言版本,因此不允许保存该项


我认为您没有将语言版本添加到消息模板的标准值中

EXM中的模板的工作方式与Sitecore中的任何地方相同。您的电子邮件应具有以下语言版本:

  • /sitecore/模板/电子邮件活动/邮件
  • /sitecore/模板/分支机构/电子邮件活动/邮件

当您在EXM中创建新消息时,没有任何“技巧”能够自动添加新的语言版本,因此我添加了一个新的
OnItemSave
事件,用于检查该项是否来自基本消息模板,并根据自己的业务逻辑创建新的语言版本

配置:

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

}

谢谢你的回答,安东。在发布问题之前,我也试过了。似乎没有任何东西能够创建de AT语言版本。已将版本添加到分支模板的_uStandardValues。。没有结果我将在触发“onimadded”方法时,在EXM配置中插入一个新管道,为我的消息创建自定义语言版本这似乎只有在用户管理器中将默认内容语言更改为该特定语言时才能正常工作。将忽略
shell
contentLanguage
属性。我正在提交一张票。
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
                }
            }
        }

    }

}