我的内容结构是:
-Home (the site root node) -About Us -Our Sevice1 -Our Sevice2 -Our Sevice3
我为我们的服务创建了一个宏。 在宏观中,我想要我们的服务1,我们的服务2,我们的服务3 ...... 但在列表变量关于我们也来了,但我不想要它 我只想要子节点的服务名称
var list= CurrentPage.Children();
关于我们也列在名单上,但我不想要它。
答案 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