在Umbraco Razor导航中输出顶级节点

时间:2014-10-28 12:04:26

标签: razor umbraco umbraco7

我正在努力使用非常简单的Umbraco 7导航。基本上,我在一个解决方案中有几个“站点” - 或者,相同的站点,但是对于不同的国家和语言。他们的主页是顶级节点,所有子页面都嵌套在2级及以下。

这适用于各个站点(输出1级节点的子级)。 但是,我想创建第二个菜单,它只输出顶级节点,我可以在不同的站点之间切换。由于某种原因,我不能这样做。

@inherits UmbracoTemplatePage
@{
  var homePage = CurrentPage.AncestorsOrSelf(1).First();
  var subItems = homePage.Children;

  var rootItems = homePage.Siblings;
}

<ul>
  @foreach (var item in subItems) {
  <li>@item.Name</li>
  }
</ul>

<ul>
  @foreach (var item in rootItems) {
  <li>@item.Name</li>
  }
</ul>

它完美地输出第一个列表,但第二个列表没有输出。如果我尝试输出@homePage.Name它会给我一个输出,所以我知道根项是可访问的。

理想情况下,我希望它在第二个导航中输出所有根节点(基本上是SiblinbsOrSelf())。

我做错了什么?

1 个答案:

答案 0 :(得分:8)

获取根级别的所有节点:

var rootNodes = Umbraco.TypedContentAtRoot();

这将包括当前页面,必要时可以省略。

根据需要在ul输出:

<ul>
    @foreach (var n in rootNodes)
    {
        <li>
            @n.Name
        </li>
    }
</ul>