在Umbraco 7.8.1中按名称获取子节点

时间:2018-03-06 04:55:04

标签: umbraco umbraco7

我的内容结构是:

-Home (the site root node)
  -About Us
  -Our Sevice1
  -Our Sevice2
  -Our Sevice3

我为我们的服务创建了一个宏。 在宏观中,我想要我们的服务1,我们的服务2,我们的服务3 ...... 但在列表变量关于我们也来了,但我不想要它 我只想要子节点的服务名称

  var list= CurrentPage.Children();

关于我们也列在名单上,但我不想要它。

2 个答案:

答案 0 :(得分:1)

您在集合中看到About Us页面的原因是您使用Children方法。

使用Children方法,您要求父节点的直接子节点向下移动一个级别。所以在这种情况下,你要求主页的所有直接孩子,所以这就像预期的那样。

您要实现的是所有Service个节点的集合。要做到这一点,你可以做这样的事情。

确保您的服务节点具有单独的文档类型(例如文档类型Service Page)。

然后您可以执行以下操作:

var servicePages = CurrentPage.ServicePages;

您可以在此处查看相关文档:

https://our.umbraco.org/documentation/reference/querying/dynamicpublishedcontent/collections

但所有这些都是使用动态语法,这将在未来版本的Umbraco中删除。所以我建议你去使用强类型语法。

然后可以通过以下方式更改:

var servicePages = Model.Content.Children.Where(x => x.DocmentTypeAlias == "servicePage");

这样做的目的是获取您当前页面的IPublishedContent对象,即主页,然后您将所有子文件的文档类型别名为{{ 1}}。

答案 1 :(得分:0)

就像@Mivaweb所提到的那样,最好不要使用动态(我认为除了将来被删除之外还要考虑性能)。

但是,我认为您不必创建单独的文档类型,尽管这也会有效。 Where方法的谓词应该处理其他表达式,例如:

fbset -i