在function addItem(){
$('#taskAccordion').accordion('add',{
title: 'Perl',
selected: false,
content:'This is Perl.'
});
}
中,是否可以通过编程方式在模板中添加新字段?
我有一个模板" Sitecore
",在此模板中我想添加一个字段" DictionaryName
"其类型" Newname
"。
答案 0 :(得分:1)
您可以从项目中以编程方式访问模板,然后将一个项目添加到此模板。该模板是一个常见的项目儿童。
答案 1 :(得分:1)
我为你编写并测试了这段代码 - 它在我的机器上运行完美,并在指定的模板中创建了新的单行字段。这是方法:
private void AddFieldToTemplate(string fieldName, string tempatePath)
{
const string templateOftemplateFieldId = "{455A3E98-A627-4B40-8035-E683A0331AC7}";
// this will do on your "master" database, consider Sitecore.Context.Database if you need "web"
var templateItem = Sitecore.Configuration.Factory.GetDatabase("master").GetItem(tempatePath);
if (templateItem != null)
{
var templateSection = templateItem.Children.FirstOrDefault(i => i.Template.Name == "Template section");
if (templateSection != null)
{
var newField = templateSection.Add(fieldName, new TemplateID(new ID(templateOftemplateFieldId)));
using (new EditContext(newField))
{
newField["Type"] = "Text"; // text stands for single-line lext field type
}
}
{
// there are no template sections here, you may need to create one. template has only inherited fields if any
}
}
}
以下是用法 - 第一个字符串参数是新字段的名称,第二个是您正在使用的数据库中模板路径的字符串值:
AddFieldToTemplate("New Single Line Field", "/sitecore/templates/Sample/Sample Item");
将“Sample Item”模板替换为模板路径,并设置要添加的所需字段名称。另外不要忘记使用命名空间:
using Sitecore;
using Sitecore.Data;
using Sitecore.Data.Items;
希望这有帮助!
答案 2 :(得分:0)
为您编写了此示例。
<块引用>想了解更多https://doc.sitecore.com/legacy-docs/SC71/data-definition-api-cookbook-sc70-a4.pdf
public JsonResult CreateTemplate()
{
try
{
using(new SecurityDisabler())
{
///Get Database
Database master = Sitecore.Configuration.Factory.GetDatabase("master");
/// Every node in content tree ia an Item. Ex- Templates,Field, Item, etc.
/// Template: /sitecore/templates/System/Templates/Template -{AB86861A-6030-46C5-B394-E8F99E8B87DB}
var templateId = master.GetTemplate(new ID("{AB86861A-6030-46C5-B394-E8F99E8B87DB}"));
/// parentItem is the item/ Template folder where you want to create your template.
/// ParentItem: /sitecore/templates/[new folder {Guid}]
Item parentItem = master.GetItem(new ID("{3C7516ED-7E3E-4442-8124-26691599596E}"));
Item newItem = parentItem.Add("HelloTemplate", templateId);
// adding Field in Templates.
TemplateItem exampleTemplate = master.Templates[new ID(newItem.ID.ToString())];
TemplateSectionItem data = exampleTemplate?.GetSection("data");
if( data == null || data.InnerItem.Parent.ID != exampleTemplate.ID)
{
data = exampleTemplate.AddSection("Data", false);
}
TemplateFieldItem title = data?.GetField("title");
if(title == null)
{
TemplateFieldItem field = data.AddField("Title");
}
}
return Json(new { Result = "item created" }, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
return Json(new { Result = "item not created " + ex.Message+"\n"+ex.StackTrace } , JsonRequestBehavior.AllowGet);
}
}