Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Sitecore获取继承的模板_C#_Templates_Inheritance_Sitecore - Fatal编程技术网

C#Sitecore获取继承的模板

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.

我试图通过代码找到所有继承特定模板的模板。我有基本模板的ID(
基本网页
),并且我正在迭代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来详细说明吗?