【问题标题】:Output top level nodes in Umbraco Razor navigation在 Umbraco Razor 导航中输出顶级节点
【发布时间】:2014-12-23 19:59:04
【问题描述】:

我正在为一个非常简单的 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())。

我做错了什么?

【问题讨论】:

    标签: razor umbraco umbraco7


    【解决方案1】:

    获取根级别的所有节点:

    var rootNodes = Umbraco.TypedContentAtRoot();
    

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

    根据需要在ul 中输出:

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

    【讨论】:

    • 谢谢,就像一个魅力。我编辑了您的答案,因为变量声明与列表中使用的不同。
    • @Nix 对不起,我的错!感谢您的编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多