Вывод узлов верхнего уровня в навигации Umbraco Razor

Я борюсь с очень простой навигацией 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()).

Что я делаю неправильно?


person Nix    schedule 28.10.2014    source источник


Ответы (1)


Чтобы получить все узлы на корневом уровне:

var rootNodes = Umbraco.TypedContentAtRoot();

Это будет включать в себя текущую страницу, которую при необходимости можно опустить.

Чтобы вывести его в ul по мере необходимости:

<ul>
    @foreach (var n in rootNodes)
    {
        <li>
            @n.Name
        </li>
    }
</ul>
person LoveFortyDown    schedule 28.10.2014
comment
Спасибо, работает как шарм. Я отредактировал ваш ответ, так как объявление переменной отличалось от того, которое использовалось в списке. - person Nix; 28.10.2014
comment
@Nix Прости, моя ошибка! Спасибо за редактирование. - person LoveFortyDown; 28.10.2014