在Sitecore中查找重复字段的最佳方法

时间:2014-10-14 19:04:24

标签: sitecore

我有一些模板可以定义相同的字段,例如' Page Title'或者'页面名称'或其他什么,但它们在不同的部分定义。

当内容项使用这两个模板时,当然它们在编辑项目时都会显示在其各个部分中。找到这些事件的最佳方法是什么?

我正在编写一些代码来检查所有模板,递归查看模板继承,并查找重复项,但这已经失控了。

查看所有内容项本身以查看所有部分的所有字段,看看是否有重叠怎么样?这会让我到达我需要去的地方,但是如果给出Sitecore项目,我也不知道如何做到这一点。

1 个答案:

答案 0 :(得分:2)

下面的代码遍历所有模板并检查重复的字段键:

TemplateDictionary dict = TemplateManager.GetTemplates(Database.GetDatabase("master"));

List<string> duplicates = new List<string>();

string reportLine = "template '{0}': field '{1}' duplicated from templates '{2}'";

foreach (KeyValuePair<ID, Template> templatePair in dict)
{
    foreach (IGrouping<string, TemplateField> grouping in templatePair.Value.GetFields(true).GroupBy(f => f.Key).Where(f => f.Count() > 1))
    {
        duplicates.Add(String.Format(reportLine, templatePair.Value.FullName, grouping.Key, String.Join(", ", grouping.Select(g => g.Template.FullName))));
    }
}

它将以格式

返回一个重复字段列表
template 'System/Analytics/Engagement Automation/Engagement Plan State': field 'description' duplicated from templates 'System/Workflow/State, System/Analytics/Engagement Automation/Designer/Designer Item Parameters'