2016-05-06 2 views
0

Я только начал использовать Umbraco (и бритву/mvc). Пока мне удалось настроить базовый проект, но следующий шаг - это навигация.Umbraco 7.4.3 dropdown navigation

Я читал документацию и искал фрагменты кода в Интернете, но, к сожалению, никто из них не помогает (или я могу не понимать его правильно).

код я использую сейчас выглядит следующим образом:

<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> 

взяты из How to create Top navigation Sub Menu in umbraco CMS using partial view.

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

Есть ли способ отображать ВСЕ элементы меню, включая их детей вместо текущего? Кажется, я не понимаю.

ответ

1

Фактически вы найдете примеры реализации шаблонов в Umbraco о том, как реализовать навигацию. Ниже приведен пример прямо из 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> 

Это даст вам ваше меню верхнего уровня, но то, что вы хотите, чтобы это рекурсивно визуализации всех детей, а также и поэтому Sitemap пример даст вам лучше понимание того, как этого добиться. Следующий пример снова взят из 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> 
    } 
} 

Шаблоны содержатся в пустой установке. Вам не нужно устанавливать стартовый комплект для доступа к ним. В разделе разработчика перейдите в Partial View Macro и нажмите кнопку «Создать», после чего вы увидите параметры шаблона.

+0

Приносим извинения за задержку! Но большое спасибо за эти фрагменты! Я установил umbraco без шаблона, поэтому я не знал об этом. Спасибо! Это помогло мне много двигаться дальше. –

+0

Шаблоны находятся в пустой установке. Вам не нужно устанавливать стартовый комплект для доступа к ним. В разделе разработчика перейдите в Partial View Macro и нажмите кнопку «Создать», после чего вы увидите параметры шаблона. – ProNotion

+0

Я не знал об этом ProNotion, спасибо за подсказку. Но если я вставляю вышеуказанный код (код карты сайта), он по-прежнему отображает только дочернюю страницу. –

Смежные вопросы