我正在尝试通过代码查找继承特定模板的所有模板。我有基本模板的ID(Base Web Page
),我正在迭代Sitecore中的所有模板项,寻找继承Base Web Page
的项目。
foreach (var item in templateItems)
{
var baseTemplates = item.Template.BaseTemplates.ToList();
foreach (var baseTemplate in baseTemplates)
{
if (baseTemplate.ID == templateItem.ID)
{
inheritors.Add(item.ID.ToString());
}
}
}
但是,item.Template.BaseTemplates
为我提供了根级别基础模板的列表;它不是给我Base Web Page
,而是为我提供了Base Web Page
继承的模板(Advanced
,Appearance
,Help
等等。
因此我不知道该项目是否实际上是继承Base Web Page
。
是否有方法可以直接继承模板?如何查找继承Base Web Page
的所有模板?
答案 0 :(得分:3)
中的
item.Template
部分
var baseTemplates = item.Template.BaseTemplates.ToList();
行不正确。
item.Template
在此处返回/sitecore/templates/System/Templates/Template
,因此您始终会检查BaseTemplate
Template
个foreach (var item in templateItems)
{
var baseTemplates = new TemplateItem(item).BaseTemplates.ToList();
foreach (var baseTemplate in baseTemplates)
{
if (baseTemplate.ID == templateItem.ID)
{
inheritors.Add(item.ID.ToString());
}
}
}
模板。
您的代码应为:
LinkDatabase
更好的方法可能是使用BaseTemplate
查找项目的所有引荐来自var links = Sitecore.Globals.LinkDatabase.GetItemReferrers(templateItem, false);
foreach (var link in links)
{
if (link.SourceFieldID == Sitecore.FieldIDs.BaseTemplate)
{
inheritors.Add(link.SourceItemID.ToString());
}
}
字段的链接:
$('.scalize').on('click', '.item-point', (function() {
$(this).siblings('.item-point.active').each(function() {
var popover = $(this).data('popover');
$(popover).removeClass('fadeIn').css({
'display': 'none'
});
$(this).removeClass('active');
});
}));