2014-10-28 36 views
3

我正在用非常簡單的Umbraco 7導航掙扎。基本上,我在一個解決方案中有幾個「站點」,或者同一個站點,但是針對不同的國家和語言。他們的主頁是頂級節點,並且所有的子頁面都嵌套在級別2和以下。在Umbraco Razor導航中輸出頂級節點

這適用於單個網站(輸出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 2014-10-28 13:24:03

+0

@Nix對不起,我的錯!感謝編輯。 – PTuckley 2014-10-28 13:29:01