C#Sitecore获取继承的模板
我试图通过代码找到所有继承特定模板的模板。我有基本模板的ID(C#Sitecore获取继承的模板,c#,templates,inheritance,sitecore,C#,Templates,Inheritance,Sitecore,我试图通过代码找到所有继承特定模板的模板。我有基本模板的ID(基本网页),并且我正在迭代Sitecore中的所有模板项,查找继承基本网页的项 foreach(templateItems中的变量项) { var baseTemplates=item.Template.baseTemplates.ToList(); foreach(baseTemplates中的var baseTemplate) { if(baseTemplate.ID==templateItem.ID) { inheritors.
基本网页
),并且我正在迭代Sitecore中的所有模板项,查找继承基本网页
的项
foreach(templateItems中的变量项)
{
var baseTemplates=item.Template.baseTemplates.ToList();
foreach(baseTemplates中的var baseTemplate)
{
if(baseTemplate.ID==templateItem.ID)
{
inheritors.Add(item.ID.ToString());
}
}
}
然而,item.Template.BaseTemplates
给了我一个根级基本模板的列表;它不是给我基本网页
,而是给我基本网页
继承的模板(高级
,外观
,帮助
,等等)
因此,我不知道该项是否真的继承了基本Web页面
是否有直接继承模板的方法?如何找到继承
基本网页的所有模板?在
var baseTemplates=item.Template.baseTemplates.ToList();
线路不正确
item.Template
在此处返回/sitecore/templates/System/templates/Template
,因此您始终要检查模板的基本模板
您的代码应该是:
foreach(templateItems中的变量项)
{
var baseTemplates=new TemplateItem(item).baseTemplates.ToList();
foreach(baseTemplates中的var baseTemplate)
{
if(baseTemplate.ID==templateItem.ID)
{
inheritors.Add(item.ID.ToString());
}
}
}
更好的方法可能是使用LinkDatabase
查找从BaseTemplate
字段链接的项目的所有推荐人,如下所示:
var links=Sitecore.Globals.LinkDatabase.GetItemReferrers(templateItem,false);
foreach(链接中的var链接)
{
if(link.SourceFieldID==Sitecore.FieldIDs.BaseTemplate)
{
Add(link.SourceItemID.ToString());
}
}
您的解决方案在于LinkDatabasecare来详细说明吗?