Sitecore 如何通过管道以英语添加项目的版本
Sitecore How to add Item's version in English language via pipelines
使用 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();
}
}
但这并没有添加 en
语言中的版本,而是添加了 Content Language
.
中的版本
根据我的记忆,当你打电话时:
Item enItem = Sitecore.Context.Database.GetItem(item.ID, Sitecore.Data.Managers.LanguageManager.GetLanguage("en"))
如果没有 en
版本,但该项目有任何其他语言的版本,您仍然会得到一个 Item 对象,但 enItem.Versions.Count
将为 0。
您应该尝试类似的方法(未测试!):
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();
}
}
编辑
如果您需要将字段从原始项目复制到 EN 项目:
Item newEnVersion = enItem.Versions.AddVersion();
item.Fields.ReadAll()
foreach (Field field in _item.Fields) { if (field != null && !string.IsNullOrEmpty(_item[field.Key])) { newEnItem[field.Key] = _item[field.Key] } }
使用 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();
}
}
但这并没有添加 en
语言中的版本,而是添加了 Content Language
.
根据我的记忆,当你打电话时:
Item enItem = Sitecore.Context.Database.GetItem(item.ID, Sitecore.Data.Managers.LanguageManager.GetLanguage("en"))
如果没有 en
版本,但该项目有任何其他语言的版本,您仍然会得到一个 Item 对象,但 enItem.Versions.Count
将为 0。
您应该尝试类似的方法(未测试!):
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();
}
}
编辑 如果您需要将字段从原始项目复制到 EN 项目:
Item newEnVersion = enItem.Versions.AddVersion();
item.Fields.ReadAll()
foreach (Field field in _item.Fields) { if (field != null && !string.IsNullOrEmpty(_item[field.Key])) { newEnItem[field.Key] = _item[field.Key] } }