Sitecore Item CURD

发布时间 2023-12-12 12:35:03作者: 灵火

基础 CURD


Database db = Sitecore.Configuration.Factory.GetDatabase("master");
Language lang = Language.Parse("en");
TemplateItem  folderTemplate = db.GetTemplate("	/sitecore/templates/Common/Folder");

// 获取 Home Item
Item homeItem = db.GetItem("/sitecore/content/Home");


// 判断 ItemName 是否合规
bool isVaildItemName = ItemUtil.ProposeValidItemName("NewItemName");

// 添加一个 Item
Item newItem = homeItem.Add("NewItemName");
// 或
newItem = homeItem.Add("NewItemName", TemplateItem);

// 添加一个 Version,当 Item 不存在时,即是添加一个 Item
newItem = newItem.Versions.AddVersion();

// 切换 Language 上下文
using (new LanguageSwitcher(language))
{
    // 在此 Block 内获取的 Item 将会指定语言的 Item
    Item helloItem = db.GetItem("/sitecore/content/Home/Hello");
}


// 编辑内容
if (!item.Editing.IsEditing){
    newItem.Editing.BeginEdit();
    newItem.Field["Content"] = "Hello, this is a demo.";
    // 也可以使用 ID 来指定其中的 Field,此处的 ID 是 FieldIDs.Workflow。
    newItem.Field["{A4F985D9-98B3-4B52-AAAF-4344F6E747C6}"] = "Hello, this is a demo.";
    newItem.Editing.EndEdit();

    // 也可以使用 using 来 Edit
    using(new EditContext(newItem)){
        // TODO: Item Editing...
    }
}

// 因为有时会出现权限问题,可使用 SecurityDisabler 来处理
using (new SecurityDisabler()){
    // TODO: Item Editing...
}

// 如果出现权限或 Site 的问题,可以使用下面这个 Switcher 和 SecurityDisabler 一起处理
using (new SiteContextSwitcher(SiteContext.GetSite("shell")))
using (new SecurityDisabler()){
    // TODO: Item Editing...
}


// 删除 Item,这个没啥好说的
newItem.Delete();
newItem.DeleteChildren();

Sitecore 提供的 Fields 和 Utils

Sitecore.Fields

image

Utils

  1. ItemUtils