2016-05-06 8 views
0

Ich habe gerade begonnen, Umbraco (und Rasierer/MVC) zu verwenden. Bis jetzt habe ich es geschafft, das Basisdesign zu erstellen, aber der nächste Schritt ist die Navigation.Umbraco 7.4.3 Dropdown-Navigation

Ich habe die Dokumentation gelesen und suche Code-Snippets online, aber leider hilft keiner wirklich (oder ich verstehe es nicht richtig).

Der Code, den ich jetzt so aussieht bin mit:

<ul> 
     @{ 
      var homeNode = CurrentPage.AncestorsOrSelf(1).First(); 

      // The menu items we want are all of the children of the homepage 
      // We also check if "Hide in navigation" is on in the menu, we shouldn't show hidden items 
      var menuItems = homeNode.Children.Where("UmbracoNaviHide == false"); 
     } 

     <li><a href="@homeNode.Url">@homeNode.Name</a></li> 

     @foreach (var page in menuItems) 
     { 
      if(page.Name!="Banner Settings") 
      { 
      <li> 
       <a href="@page.Url">@page.Name</a> 

        <!-- If the page has child nodes (2nd level) that are visible and docTypeAlias is Textpage (textpages) --> 
       @if (page.Textpages.Where("UmbracoNaviHide == false").Count() > 0) 
       { 
        <ul> 
         @foreach (var childPage in page.Children.Where("UmbracoNaviHide == false")) 
         { 
          <li><a href="@childPage.Url">@childPage.Name</a></li> 
         } 
        </ul> 
       } 
      </li> 
      } 
     } 
    </ul> 

von How to create Top navigation Sub Menu in umbraco CMS using partial view.

genommen leider aber wie der Code selbst weist darauf hin, es zeigt nur die aktuelle Seite Ich bin auf und es sind Kinder.

Gibt es eine Möglichkeit, ALLE Menüpunkte einschließlich ihrer Kinder anstelle der aktuellen anzuzeigen? Ich kann es nicht herausfinden.

Antwort

1

In Umbraco finden Sie Beispiele für Beispielimplementierungen zur Implementierung der Navigation. Unten ist ein Beispiel gerade aus Umbraco v7.4.3

@inherits Umbraco.Web.Macros.PartialViewMacroPage 

@* 
    This snippet displays a list of links of the pages immediately under the top-most page in the content tree. 
    This is the home page for a standard website. 
    It also highlights the current active page/section in the navigation with the css class "current". 
*@ 

@{ var selection = CurrentPage.Site().Children.Where("Visible"); } 

<ul> 
    @foreach (var item in selection) 
    { 
     <li class="@(item.IsAncestorOrSelf(CurrentPage) ? "current" : null)"> 
      <a href="@item.Url">@item.Name</a> 
     </li> 
    } 
</ul> 

Dadurch werden Sie Ihre Top-Level-Menü geben, aber was wollen Sie ist für diese rekursiv alle Kinder als auch machen zu und so wird die Sitemap Beispiel Sie eine bessere geben Einblick, wie dies zu erreichen ist. Das folgende Beispiel stammt wiederum aus Umbraco v7.4.3.

@inherits Umbraco.Web.Macros.PartialViewMacroPage 

@* 
    This snippet makes a list of links of all visible pages of the site, as nested unordered html lists. 

    How it works: 
    - It uses a custom Razor helper called Traverse() to select and display the markup and links. 
*@ 

@{ var selection = CurrentPage.Site(); } 

<div class="sitemap"> 
    @* Render the sitemap by passing the root node to the traverse helper, below *@ 
    @Traverse(selection) 
</div> 


@* Helper method to travers through all descendants *@ 
@helper Traverse(dynamic node) 
{ 
    @* Update the level to reflect how deep you want the sitemap to go *@ 
    var maxLevelForSitemap = 4; 

    @* Select visible children *@ 
    var selection = node.Children.Where("Visible").Where("Level <= " + maxLevelForSitemap); 

    @* If any items are returned, render a list *@ 
    if (selection.Any()) 
    { 
     <ul> 
      @foreach (var item in selection) 
      { 
       <li class="[email protected]"> 
        <a href="@item.Url">@item.Name</a> 

        @* Run the traverse helper again for any child pages *@ 
        @Traverse(item) 
       </li> 
      } 
     </ul> 
    } 
} 

Die Vorlagen sind in einem leeren installieren. Sie müssen kein Starter-Kit installieren, um darauf zugreifen zu können. Gehen Sie im Entwicklerbereich zum Teilansichts-Makro und klicken Sie auf Erstellen, dann sehen Sie die Vorlagenoptionen.

+0

Ich entschuldige mich für die Verzögerung! Aber vielen Dank für diese Schnipsel! Ich habe Umbraco ohne Vorlage installiert, so dass ich mir dessen nicht bewusst war. Vielen Dank! Es hat mir sehr geholfen, weiterzugehen. –

+0

Die Vorlagen sind dort in einer leeren Installation. Sie müssen kein Starter-Kit installieren, um darauf zugreifen zu können. Gehen Sie im Entwicklerbereich zum Teilansichts-Makro und klicken Sie auf Erstellen, dann sehen Sie die Vorlagenoptionen. – ProNotion

+0

Ich wusste nichts über diese ProNotion, danke für den Hinweis. Aber wenn ich den obigen Code (Sitemap-Code) einfüge, wird nur die untergeordnete Seite angezeigt. –