C# Sitecore如何添加项目';通过管道以英语编写的s版本
使用Sitecore事件处理程序“OnItemSave”,如果该项目不存在,我将添加该项目的英语版本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
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();
}
}