【问题标题】:Get all child items under either Sitecore template A or template B获取 Sitecore 模板 A 或模板 B 下的所有子项
【发布时间】:2015-06-16 04:16:22
【问题描述】:

有没有办法针对两个模板下的所有子页面?如,如果模板名称为“A”或模板名称为“B”,则获取子项?

这就是我所拥有的,它现在只针对一个模板,但我想向它添加某种或,以便我可以获取另一个模板的子项:

    Item ContentGroup = CurrentItem.Axes.SelectSingleItem(@"child::*[@@templatename='Section Page']/*[@@templatename='Sub Page Top Level']");

我去获取名称为“子页面顶级”或“子页面顶级自定义”的模板的所有子项。有没有什么方法可以轻松做到这一点?

【问题讨论】:

    标签: templates sitecore


    【解决方案1】:

    你可以使用or这样的逻辑运算符:

    /*[@@templatename='Sub Page Top Level' or @@templatename='Sub Page Top Level Custom']
    

    【讨论】:

      【解决方案2】:

      如果你使用的是 Linq,你可以使用:

      homeItem.Axes.GetDescendants().Where(x =>(x.TemplateID.ToString().Equals(yourId1) || x.TemplateID.ToString().Equals(yourId2));
      

      您还可以使用 Sitecore XPath Builder 评估您的站点核心查询: 要基于 2 个模板获取 home 项目下的所有项目,请使用:

      /sitecore/content/home//*[@@templateid='{76036F5E-CBCE-46D1-AF0A-4143F9B557AA}' or @@templateid='{075AB719-9D9C-4ED0-9100-545E87D830A0}' ]
      

      我建议你使用 templateid 而不是 templatename。几年前,我进行了一些测试,使用 templateid 进行了更快的查询

      【讨论】:

      • 我不知道他们是否更新了API或什么,但GetDescendants不再接受任何参数。
      • GetDescendants 需要更长的时间来加载。有什么方法可以使用 GetChildren 方法吗?
      • @gretro 您没有将任何参数传递给 GetDescendants,而是使用 linq 查询。
      【解决方案3】:

      我知道这篇文章已经有几个月不活跃了。

      首先我想说我不是 Sitecore 专家,但由于我必须面对这个问题,所以我是这样解决我的问题的。我想确保减少调用次数和对数据库调用的大小,因为我的解决方案将存在于 Azure 中。

      var path = rootItem.Paths.Path;
      
      var query = String.Format("fast:{0}//*[@@templateid='{1}' or @@templateid='{2}']",
                  path, CategoryItems.CategoryLandingPageTemplateId, CategoryItems.CategoryPageTemplateId);
      
      var items = GetSitecoreDatabase().SelectItems(query);
      

      如您所见,我使用了快速查询。这适用于直系子女,但您也可以修改查询以获取后代。如果您知道您的查询将返回 1000 个或更少的项目,这应该可以正常工作。否则,我会使用搜索引擎(Lucene 或 Solr)来获取这些项目。

      【讨论】:

        猜你喜欢
        • 2015-01-01
        • 1970-01-01
        • 2014-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-29
        • 2018-11-22
        • 1970-01-01
        相关资源
        最近更新 更多