当前位置 : 主页 > 网络推广 > seo >

使用sitecore查询检索项目

来源:互联网 收集:自由互联 发布时间:2021-06-16
在使用xpath构建器的入门工具包中,如何从Home项目下的“Site Section”模板中获取所有继承的项目? 当我运行以下内容时: /sitecore/content/home/*[@@templatekey='product section'] 返回一个项目/ sit
在使用xpath构建器的入门工具包中,如何从Home项目下的“Site Section”模板中获取所有继承的项目?

当我运行以下内容时:

/sitecore/content/home/*[@@templatekey='product section']

返回一个项目/ sitecore / content / Home / Products,但是,以下内容不会返回任何内容:

/sitecore/content/home/*[@@templatekey='site section']

我正在尝试做的是使用asp.net web控件而不是xslt从继承“Site Section”模板的项目构建菜单.

有任何想法吗?

谢谢,
塔里克

**更新

提供有关该问题的更多信息:

item / sitecore / content / Home / Products有模板/ sitecore / templates / Starter Kit / Site Sections / Product Section,其基本模板为/ sitecore / templates / Starter Kit / Item Types / Site Section

如果我想要Home下的产品和参考(类似于产品)项目,我将运行以下查询:

/sitecore/content/home/*[@@templatekey='product section' or @@templatekey='references section']

有没有办法让Home下的项目以Site Section作为基本模板.在xslt中有一个方法sc:GetItemsOfType(‘site section’,$home / item).

**答案

var homeItem = Sitecore.Context.Database.GetItem(Sitecore.Context.Site.StartPath);
var siteSectionItems = new List<Item>();

foreach (Item item in homeItem.Children)
{
    var itemTemplate = TemplateManager.GetTemplate(item);

    if (itemTemplate.InheritsFrom("Site Section"))
        siteSectionItems.Add(item);
}
在查询中使用//将使其递归,而不是直接子项.这会对性能产生影响.

/sitecore/content/home//*[@@templatekey='site section']

另外,不应该是@@ templatename而不是@@ templatekey吗?

/sitecore/content/home//*[@@templatename='site section']
网友评论