2014-10-28 4 views
3

Я борюсь с очень простой навигацией Umbraco 7. В принципе, у меня есть несколько «сайтов» в одном решении - или на том же сайте, но для разных стран и языков. Их домашняя страница - это узлы верхнего уровня, и все подстраницы вложены в уровень 2 и ниже.Выходные узлы верхнего уровня в Umbraco Навигация бритвы

Это прекрасно работает для отдельных сайтов (выводящих детей узла уровня 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()).

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

ответ

8

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

var rootNodes = Umbraco.TypedContentAtRoot(); 

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

Чтобы вывести его в ul в соответствии с требованиями:

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

Спасибо, работает как шарм. Я отредактировал ваш ответ, поскольку объявление переменной отличается от объявления, используемого в списке. – Nix

+0

@Nix Извините, что, моя ошибка! Спасибо за редактирование. – PTuckley