我正在创建一个以编程方式在Sitecore中创建项目的导入工具。该项目已创建,但当我查看该项目时,它表示“当前项目没有"英语:英语。”#34;'我输入using (new LanguageSwitcher("en-gb"))
但是没有解决它。我的代码的工作方式是它查找项目应该放入的文件夹(所有文件夹都基于年份,例如2016年,2017年);如果文件夹不存在,我在创建项目之前创建该文件夹。这是我的代码:
protected void PublishRelease(PressReleaseItem release)
{
using (new LanguageSwitcher("en-gb"))
{
var year = release.ReleaseDate.Year;
// create year folder if it doesn't exist
var folderQuery = String.Format(PressReleaseYearFolderFastQuery, year);
Item folder = _db.SelectItems(folderQuery).ToList().FirstOrDefault();
if (folder == null)
{
var templateId = _templateFactory.GetTemplateId<IPressReleaseYearFolderItem>();
TemplateID pressReleaseFolderTemplateId = new TemplateID(templateId.ToID());
folder = _pressReleaseFolder.Add(year.ToString(), pressReleaseFolderTemplateId);
}
if (folder == null) return;
// add item to folder
var itemTemplateId = _templateFactory.GetTemplateId<IPRNewswirePressReleaseItem>();
TemplateID pressReleaseTemplateId = new TemplateID(itemTemplateId.ToID());
item = folder.Add(SanitizeHeadline(release.Headline), pressReleaseTemplateId);
if (item == null) return;
item.Fields.ReadAll();
item.Editing.BeginEdit();
try
{
item.Fields["External ID"].Value = release.ExternalId;
item.Fields["Active"].Value = release.Active.ToString();
item.Fields["Image Url"].Value = release.ImageUrl;
item.Fields["PDF Url"].Value = release.PdfUrl;
item.Fields["Description"].Value = release.SubHeadline;
item.Fields["Headline"].Value = release.Headline;
item.Fields["Date"].Value = release.ReleaseDate.ToString("d");
item.Fields["Longtext"].Value = release.Body;
item.Fields["Category"].Value = SetReleaseCategories(release.Category);
}
catch (Exception ex)
{
item.Editing.EndEdit();
}
item.Editing.EndEdit();
}
}
当我在Sitecore中查看新项目时,它说它没有英文版本;当我点击添加新版本时,所有字段都是空白的。
答案 0 :(得分:1)
我原本希望您上面的代码默认使用en-GB语言创建新版本。像理查德提到的那样,验证你的英语和英语是否正确。被设置为&#39; en&#39;或者&#39; en-gb&#39;。如果您的默认英语有不同的代码,则可能需要更新语言切换器。
或者,您是否尝试过类似下面的操作强制版本?
get_thing_shadow
这至少可以让你测试版本创建是否正常工作,不过你不应该为新项目创建它。