2014-07-07 51 views
0

到綁定導航我剛開始用一把umbraco 7, 工作,我創建了2個文件類型和3頁,一把umbraco如何使用asp.net mvc的

我使用我從入門工具包下載templeate。首先,爲什麼很難理解這個平臺?!?! 我看到了Umbraco.tv中的所有剪輯已經..

秒和重要的問題是: 爲什麼導航欄不顯示我所有的頁面?看來我只有1頁,這是很難已經編碼..

這裏是模板的代碼:

@inherits UmbracoTemplatePage 
@{ 
    // Model.Content is the current page that we're on AncestorsOrSelf is all of the ancestors this page has in the tree 
    // (1) means: go up to level 1 and stop looking for more ancestors when you get there First() gets the first ancestor found (the home page, on level 1) 
    var homePage = CurrentPage.AncestorsOrSelf(1).First(); 
    var menuItems = homePage.Children.Where("UmbracoNaviHide == false"); 
} 
<!-- Nav --> 
<ul class="menu"> 
    @* If the Url of the current page is "/" then we want to add the class "current_page_item" *@ 
    @* Otherwise, we set the class to null, that way it will not even be added to the <li> element *@ 
    <li class="@(CurrentPage.Url == "/" ? "sel" : null)"> 
     <a href="/homepage">Home</a> 
    </li> 
    @foreach (var item in menuItems) 
    { 
     var childrenItems = item.Children.Where("UmbracoNaviHide == false"); 
     <li class="@(CurrentPage.Id == item.Id ? "sel" : null)"> 
      <a href="@item.Url">@item.Name</a> 
      @createSubmenu(childrenItems, item.Id) 
     </li> 
    } 
</ul> 

@helper createSubmenu(IEnumerable<IPublishedContent> nodes, int? parentId) { 
    if (nodes.Count() > 0){ 
     <ul> 
     @foreach (var node in nodes) 
     { 
      var childrenItems = node.Children.Where("UmbracoNaviHide == false"); 
      <li class="@(CurrentPage.Id == node.Id ? "sel" : null)"> 
       <a href="@node.Url">@node.Name</a> 
       @createSubmenu(childrenItems, node.Id) 
      </li> 
     } 
     </ul> 
    } 
} 
<!-- /Nav --> 
+0

請嘗試像這樣 var menuItems = homePage.Children.Where(x.GetPropertyValue(「umbracoNaviHide」)==「1」);並使用.Where(x.GetPropertyValue(「umbracoNaviHide」)==「1」)修改代碼,在哪裏使用過.Where(「UmbracoNaviHide == false」)。 –

回答

2
  1. 一把umbraco是這麼難(它不是),因爲它是一個平臺,融合了所有它的當開發者使用它的時候就會獲得榮耀。我的意思是,很多人都希望產品是一個「開箱即用」的網站,您可以安裝主題然後編輯內容。這是Wordpress。 Umbraco不是那樣的。它有一些入門套件,我不覺得他們幫助那麼多。當我建立一個Umbraco網站時,我總是從一個空白的板岩開始。
  2. 現在您試圖從我所看到的內容中打印導航菜單。這裏是我建議使用的代碼。此外,你會想考慮使用主模板,這將有你的導航。

    <ul> @{ var homeNode = Model.Content.AncestorOrSelf("[HomeNodeDocumentType]"); } @foreach (var node in homeNode.Children.Where(x => x.IsVisible)) { <li> <a href="@node.Url">@node.AsDynamic().yourFieldForTheTitle</a> </li> } </ul>

一些要點:

  • 你有上面的代碼是多級菜單,你可以重寫我爲提供,如果需要的代碼。我覺得並不需要那麼多。
  • 注意「yourFieldForTheTitle」,這是一個自定義文本字符串,您必須添加到您的文檔類型,不要使用名稱,它會導致你頭痛的道路。
  • 請注意「[HomeNodeDocumentType]」文檔類型。遍歷樹時,使用它們快速導航到您想要的節點。
  • 最後,使用Visual Studio獲取您的Umbraco網站設置,Intellisense將幫助您開始。

就是這樣! Umbraco非常好,堅持下去,這將是值得的!