Umbraco 7 Partial View - Main Navigation - C# - Razor - With Home Page
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{ var home = CurrentPage.Site(); }
@if (home.Children.Any())
{
@* Get the first page in the children *@
var naviLevel = home.Children.First().Level;
@* Add in level for a CSS hook *@
@* For each child page under the home node *@
foreach (var childPage in home.Children)
{
if(childPage.umbracoNaviHide != true)
{
if (childPage.Children.Any())
{
<li class="has-child @(childPage.IsAncestorOrSelf(CurrentPage) ? "current-menu-item page_item" : null)">
@if(childPage.DocumentTypeAlias == "LandingPage")
{
<a href="@childPage.Url">@childPage.navigationName</a>
@childPages(childPage.Children)
} else {
<a href="@childPage.Url">@childPage.navigationName </a>
}
</li>
}
else
{
<li class="@(childPage.IsAncestorOrSelf(CurrentPage) ? "current-menu-item page_item" : null)">
<a href="@childPage.Url">@childPage.Name</a>
</li>
}
}
}
}
@helper childPages(dynamic pages)
{
@* Ensure that we have a collection of pages *@
@*https://our.umbraco.org/documentation/Reference/Querying/DynamicNode/Collections*@
if (pages.Any())
{
@* Get the first page in pages and get the level *@
var naviLevel = pages.First().Level;
@* Add in level for a CSS hook *@
if(@pages.Where("Visible").Where("DocumentTypeAlias != @0","Faq").Where("DocumentTypeAlias != @0","NewsArticle").Count() > 0)
{
<ul>
@foreach (var page in pages.Where("Visible").Where("DocumentTypeAlias != @0","Faq").Where("DocumentTypeAlias != @0","NewsArticle"))
{
<li>
<a href="@page.Url">@page.navigationName</a>
@* if the current page has any children *@
@if (page.Children.Any())
{
@* Call our helper to display the children *@
@childPages(page.Children)
}
</li>
}
</ul>
}
}
}
@{ var home = CurrentPage.Site(); }
@if (home.Children.Any())
{
@* Get the first page in the children *@
var naviLevel = home.Children.First().Level;
@* Add in level for a CSS hook *@
@* For each child page under the home node *@
foreach (var childPage in home.Children)
{
if(childPage.umbracoNaviHide != true)
{
if (childPage.Children.Any())
{
<li class="has-child @(childPage.IsAncestorOrSelf(CurrentPage) ? "current-menu-item page_item" : null)">
@if(childPage.DocumentTypeAlias == "LandingPage")
{
<a href="@childPage.Url">@childPage.navigationName</a>
@childPages(childPage.Children)
} else {
<a href="@childPage.Url">@childPage.navigationName </a>
}
</li>
}
else
{
<li class="@(childPage.IsAncestorOrSelf(CurrentPage) ? "current-menu-item page_item" : null)">
<a href="@childPage.Url">@childPage.Name</a>
</li>
}
}
}
}
@helper childPages(dynamic pages)
{
@* Ensure that we have a collection of pages *@
@*https://our.umbraco.org/documentation/Reference/Querying/DynamicNode/Collections*@
if (pages.Any())
{
@* Get the first page in pages and get the level *@
var naviLevel = pages.First().Level;
@* Add in level for a CSS hook *@
if(@pages.Where("Visible").Where("DocumentTypeAlias != @0","Faq").Where("DocumentTypeAlias != @0","NewsArticle").Count() > 0)
{
<ul>
@foreach (var page in pages.Where("Visible").Where("DocumentTypeAlias != @0","Faq").Where("DocumentTypeAlias != @0","NewsArticle"))
{
<li>
<a href="@page.Url">@page.navigationName</a>
@* if the current page has any children *@
@if (page.Children.Any())
{
@* Call our helper to display the children *@
@childPages(page.Children)
}
</li>
}
</ul>
}
}
}
Comments
Post a Comment