C# Sitecore如何添加项目';通过管道以英语编写的s版本

C# Sitecore如何添加项目';通过管道以英语编写的s版本,c#,sitecore,sitecore7.2,C#,Sitecore,Sitecore7.2,使用Sitecore事件处理程序“OnItemSave”,如果该项目不存在,我将添加该项目的英语版本 public void OnItemSaved(object sender, EventArgs args) { var item = Event.ExtractParameter<Item>(args, 0); if (item == null) return; //Add version of item in English if (Sitecor

使用Sitecore事件处理程序“OnItemSave”,如果该项目不存在,我将添加该项目的英语版本

public void OnItemSaved(object sender, EventArgs args)
{
    var item = Event.ExtractParameter<Item>(args, 0);
    if (item == null) return;
    //Add version of item in English
    if (Sitecore.Context.Database.GetItem(item.ID, Sitecore.Data.Managers.LanguageManager.GetLanguage("en")) == null)
    using (new LanguageSwitcher("en"))
       {
         item.Versions.AddVersion(); 
       }
}
public void OnItemSaved(对象发送方、事件args args)
{
var item=Event.ExtractParameter(args,0);
如果(item==null)返回;
//添加项目的英文版本
if(Sitecore.Context.Database.GetItem(item.ID,Sitecore.Data.Managers.LanguageManager.GetLanguage(“en”)==null)
使用(新语言切换器(“en”))
{
item.Versions.AddVersion();
}
}

但这并没有添加
en
语言中的版本,而是添加了
内容语言中的版本

Item enItem=Sitecore.Context.Database.GetItem(Item.ID,Sitecore.Data.Managers.LanguageManager.GetLanguage(“en”))
如果没有
en
version,但此项具有任何其他语言的版本,则仍将获得一个项对象,但
enItem.Versions.Count
将为0

您应该尝试类似的方法(未经测试!):


编辑 如果需要将字段从原始项复制到EN项:

  • Item newEnVersion=enItem.Versions.AddVersion()
  • item.Fields.ReadAll()
  • foreach(item.Fields中的字段){if(Field!=null&&!string.IsNullOrEmpty(_item[Field.Key]){newEnItem[Field.Key]=\u item[Field.Key]}

  • 根据我的记忆,当你打电话时:

    Item enItem=Sitecore.Context.Database.GetItem(Item.ID,Sitecore.Data.Managers.LanguageManager.GetLanguage(“en”))
    
    如果没有
    en
    version,但此项具有任何其他语言的版本,则仍将获得一个项对象,但
    enItem.Versions.Count
    将为0

    您应该尝试类似的方法(未经测试!):


    编辑 如果需要将字段从原始项复制到EN项:

  • Item newEnVersion=enItem.Versions.AddVersion()
  • item.Fields.ReadAll()
  • foreach(item.Fields中的字段){if(Field!=null&&!string.IsNullOrEmpty(_item[Field.Key]){newEnItem[Field.Key]=\u item[Field.Key]}

  • 谢谢,如果我还想用
    英文
    版本保存相同的数据,我需要做什么。除了将字段标记为“共享”之外,还有什么其他想法吗?谢谢,如果我还想将相同的数据保存在
    英文版
    中,我需要做什么。除了将字段标记为“共享”之外,还有其他想法吗?
    Item enItem = Sitecore.Context.Database.GetItem(item.ID, Sitecore.Data.Managers.LanguageManager.GetLanguage("en"))
    if (enItem.Versions.Count == 0)
    {
        using (new LanguageSwitcher("en"))
        {
            enItem.Editing.BeginEdit();
            enItem.Versions.AddVersion();
            enItem.Editing.EndEdit();
        }
    }