c# – 在项目的所有模板中设置Sitecore字段共享
发布时间:2020-12-16 01:49:29 所属栏目:百科 来源:网络整理
导读:我需要将很多模板字段的Shared属性设置为false.是否有一种简单的方法可以在没有字段ID更改的代码中执行此操作?我写了以下代码,但它似乎没有更新属性. Sitecore.Data.Database masterDb = Sitecore.Configuration.Factory.GetDatabase("master");using (new
我需要将很多模板字段的Shared属性设置为false.是否有一种简单的方法可以在没有字段ID更改的代码中执行此操作?我写了以下代码,但它似乎没有更新属性.
Sitecore.Data.Database masterDb = Sitecore.Configuration.Factory.GetDatabase("master"); using (new Sitecore.SecurityModel.SecurityDisabler()) { try { var templates = TemplateManager.GetTemplates(masterDb); foreach (var template in templates.Values) { if (template.FullName.StartsWith("FolderName")) { foreach (var field in template.GetFields(false)) { TemplateManager.ChangeFieldSharing(field,TemplateFieldSharing.None,masterDb); } } } } catch (Exception ex) { } } 解决方法
虽然TemplateManager.GetTemplates调用会为您提供Template对象的集合,但您需要的是TemplateItem对象,以便能够对其进行编辑.您可以使用该ID从existingDatabase对象中获取该ID.
然后,您需要迭代到模板的每个TemplateSectionItem,然后才能到达TemplateFieldItem,您可以在其中访问InnerItem属性并对共享字段进行更改.您还需要标记BeginEdit()和EndEdit(),以便您可以执行更改. Sitecore.Data.Database masterDb = Sitecore.Configuration.Factory.GetDatabase("master"); using (new Sitecore.SecurityModel.SecurityDisabler()) { try { var templates = TemplateManager.GetTemplates(masterDb); foreach (var template in templates.Values) { if (template.FullName.StartsWith("FolderName")) { var tmpl = masterDb.GetTemplate(template.ID); foreach (var section in tmpl.GetSections()) { foreach (var templateFieldItem in section.GetFields()) { templateFieldItem.BeginEdit(); templateFieldItem.InnerItem[TemplateFieldIDs.Shared] = "0"; templateFieldItem.EndEdit(); } } } } } catch (Exception ex) { Response.Write("Error" + ex.Message); } } 希望这可以帮助 :) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容