Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • BEWD 90 posts 303 karma points
    Apr 03, 2019 @ 19:00
    BEWD
    0

    Center logo in the middle of site navigation partial view

    Hi

    I am building a website in Umbraco 8 and using Bootstrap 4, The design for the site has the main navigation across the top with the Business Logo in the middle (3 nav links to the left, 3 to the right of the logo)

    I have the following HTML for the navigation which works fine if hard coded but I'm not sure how to code it in a partial view (eg, select the Home node and the first 2 descendants, then place the logo, then select the next 3 descendants - including and descendants of those main pages

     <nav class="navbar navbar-expand-md navbar-fixed-top navbar-dark main-nav">
            <div class="navbar-collapse collapse nav-content order-2">
                <ul class="nav navbar-nav left">
                    <li class="nav-item">
                        <a class="nav-link" href="~/Default.aspx">Home</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="~/about.aspx">About Us</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="~/events.aspx">Events</a>
                    </li>
                </ul>
            </div>
            <ul class="nav navbar-nav text-nowrap flex-row mx-md-auto order-1 order-md-2">
                <li class="nav-item">
                    <a class="nav-link" href="#">
                        <div class="triangle" style="text-align:center;">
                            <img class="logo" src="~/images/Carps_logo.PNG" width="280" />
                            <div class="triangleImg">
                                <img src="~/images/triangle.png" />
                            </div>
                        </div>
                    </a>
                </li>
                <button class="navbar-toggler ml-2" type="button" data-toggle="collapse" data-target=".nav-content" aria-expanded="false" aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                </button>
            </ul>
            <div class="ml-auto navbar-collapse collapse nav-content order-3 order-md-3">
                <ul class="ml-auto nav navbar-nav right">
                    <li class="nav-item">
                        <a class="nav-link" href="#">Gallery</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                            Menus
                        </a>
                        <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
                            <a class="dropdown-item" href="#">A La Carte Menu</a>
                            <a class="dropdown-item" href="#">
                                Dessert Menu
                            </a>
                            <a class="dropdown-item" href="#">Childrens Menu</a>
                            <a class="dropdown-item" href="#">Sunday Lunch Menu</a>
                            <a class="dropdown-item" href="#">Drinks</a>
                        </div>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="~/contact-us.aspx">Contact</a>
                    </li>
                </ul>
            </div>
        </nav>
    

    Any advice on how I can code this would be grateful, I have done navigation partials before just not sure how to split it with the logo in the middle?

    Thanks

    Ben

  • Amir Khan 1289 posts 2746 karma points
    Apr 03, 2019 @ 19:23
    Amir Khan
    0

    Hi Ben,

    An easy route would be to put 2 multi-node treepickers (one for the left and one for the right) on your home node for each side of the nav and render those.

    Hope this helps,

    Amir

  • BEWD 90 posts 303 karma points
    Apr 03, 2019 @ 20:13
    BEWD
    0

    Ahh, now that is an option worth looking into. Would it be easy enough to also automatically display any dependants of those nodes from the normal MNTP code?

  • Amir Khan 1289 posts 2746 karma points
    Apr 03, 2019 @ 20:17
    Amir Khan
    100

    By dependents do you mean child nodes? If so you should be able to loop through them like with any other nav code, something like below.

    @if(item.Children.Any()) {
                var childItems = item.Children.Where("Visible");
                <ul>
                    @foreach(var childItem in childItems) {
                        <li><a href="@childItem.Url">@childItem.Name</a></li>   
                    }
                </ul>
            }
    
  • BEWD 90 posts 303 karma points
    Apr 04, 2019 @ 10:18
    BEWD
    0

    Great thanks Amir, it took a bit of playing around but I got it working

  • BEWD 90 posts 303 karma points
    Apr 04, 2019 @ 13:27
    BEWD
    0

    It looked at first glance to be ok and it renders fine but when I click on a link i get the below error.

    enter image description here

    The code in the Partial view is as follows and then this is bought in on the MasterPage with @Html.Partial("leftHandNavigation") :

    @inherits Umbraco.Web.Mvc.UmbracoViewPage
    @using Umbraco.Core.Models.PublishedContent
    @using Umbraco.Web
    
    @{ var selection = Model.Value<IEnumerable<IPublishedContent>>("leftHandNavigation").ToArray(); }
    
    @if (selection.Length > 0)
    {
        <ul class="nav navbar-nav right">
            @if (Model.Name == "Home")
            {
                <li class="nav-item active">
                    <a class="nav-link" href="../default.aspx">Home</a>
                </li>
            }
            else
            {
                <li class="idol">
                    <a href="~/default.aspx">Home</a>
                </li>
            }
            @foreach (var item in selection)
            {
                if (item.Children.Any())
                {
                    var childItems = item.Children;
                    <li class="nav-item dropdown">
                        <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">@item.Name</a>
    
    
                    <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
                        @foreach (var childItem in childItems)
                        {
                        <a class="dropdown-item" href="@childItem.Url">@childItem.Name</a>
                        }
                    </div> 
                    </li>
                }
                else
                {
                    {
                        <li class="nav-item">
                            <a class="nav-link" href="@item.Url">@item.Name</a>
                        </li>
                    }
    
                }
            }
        </ul>
    }
    

    Any ideas what the error is referring to?

    thanks

    Ben

  • This forum is in read-only mode while we transition to the new forum.

    You can continue this topic on the new forum by tapping the "Continue discussion" link below.

Please Sign in or register to post replies