我的内容结构是:
-Home (the site root node) -About Us -Our Sevice1 -Our Sevice2 -Our Sevice3
我为我们的服务创建了一个宏。在宏中,我想要我们的服务1,我们的服务2,我们的服务3 ......但是在列表变量关于我们也来了但我不想要它我只想要我们的子节点的服务名称
var list= CurrentPage.Children();
关于我们也列在名单上,但我不想要它。
您在集合中看到About Us
页面的原因是因为您使用Children
方法。
使用Children
方法,您要求父节点的直接子节点向下移动一个级别。所以在这种情况下,你要求主页的所有直接孩子,所以这就像预期的那样工作。
您要实现的是所有Service
节点的集合。要做到这一点,你可以做这样的事情。
确保您的服务节点具有单独的文档类型(例如doc type qazxsw poi)。
然后,您可以执行以下操作:
Service Page
您可以在此处查看有关它的文档:
var servicePages = CurrentPage.ServicePages;
但所有这些都是使用动态语法,这将在未来版本的Umbraco中删除。所以我建议你去使用强类型语法。
然后可以通过以下方式更改:
https://our.umbraco.org/documentation/reference/querying/dynamicpublishedcontent/collections
这样做是采取当前页面的var servicePages = Model.Content.Children.Where(x => x.DocmentTypeAlias == "servicePage");
对象,即主页,然后您将所有具有类型为IPublishedContent
的文档类型别名的子项。
就像@Mivaweb提到的那样,最好不要使用动态(我认为除了将来被移除之外的性能)。
但是,我认为您不必创建单独的文档类型,尽管这也会起作用。 Where方法的谓词应该处理其他表达式,例如:
servicePage