【问题标题】:Sitecore SelectItems on Inherited Template继承模板上的 Sitecore SelectItems
【发布时间】:2011-03-27 23:37:10
【问题描述】:

我正在尝试根据查询将 asp:dropdownlist 绑定到一些站点核心项目。通过查询,我想返回继承模板“站点根”的项目。

当我使用时:

Sitecore.Context.Database.SelectItems("/sitecore/content/*[@@templatename='Site Root']");

它只返回具有“Site Root”模板的项目,而不是继承此模板的模板。

如何获取查询以返回继承此模板的项目?

【问题讨论】:

    标签: sitecore


    【解决方案1】:

    这是一个返回所有继承特定模板的模板的查询。但要小心,因为它的性能不会很好。

    /sitecore/templates//*[contains(@__Base template, '<MY TEMPLATE ID>')]
    

    如果性能很重要,您最好使用 Sitecore ContentSearch 来查询模板。不过,有一个 __template 计算字段需要先激活。详情请见Sitecore-7-Enable-Default-Computed-Index-Fields

    【讨论】:

    • 谢谢!当您可以缩小查询模板的位置时,它实际上表现得很好;-)
    【解决方案2】:

    您不能查询继承的模板

    【讨论】:

    • 好的,将更改我的查询以包含从该模板继承的所有模板。
    • 这当然是一种选择,但是您在查询中添加的检查越多,它可能运行的速度就越慢。您还应该考虑使用 Sitecore API 代码进行更通用的查询,然后使用 LINQ 按 TemplateName 过滤结果项
    • 错了。你可以……看看下面的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多