Copied to clipboard

Flag this post as spam?

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


  • Paul Stewart 50 posts 71 karma points
    Mar 07, 2012 @ 10:59
    Paul Stewart
    0

    Navigation Challenge?

    Hey guys, I've create my navigation code for a client and for a specific page the client wants the main level navigation to show ("level 1") 

    Home
    Page 1
    Page 2
    Page 3
    - Subpage 1
    - Subpage 2
    - Subpage 3

    Page 4
    - Subpage 4
    - Subpage 5
    - Subpage 6

    Page 5
    Page 6

    So when ever i go to subpage 1, it shows only the list of pages withing the same level as subpage 1, but I want to show the main nav with the subpages still, but only for a specific page. So for example I only want Page 4's sub pages to show the main navigation and the rest will show the pages within the same level. 

    Heres my code.


    @using umbraco.MacroEngines
    @inherits umbraco.MacroEngines.DynamicNodeContext

    @{
      int minLevel String.IsNullOrEmpty(Parameter.minLevelint.Parse(Parameter.minLevel);
      int maxLevel String.IsNullOrEmpty(Parameter.maxLevel10 int.Parse(Parameter.maxLevel);
      
      if (minLevel == &@Model.showInGroupNav)
      {
        minLevel 1;
      }
      
      var parent @Model.AncestorOrSelf(minLevel);
      if (parent != null)
      {
        <ul>
        @{
          
          var items parent.Children.Where("Visible").Where("Level <= " maxLevel.ToString()).Where("Level >= " minLevel.ToString());
          
          int itemCount items.Count();
          int itemIndex 0;
          
          foreach (var item in items)
          {
            itemIndex++;
           
            string selected Array.IndexOf(Model.Path.Split(',')item.Id.ToString()>= "selected " "";
            string firstLast "";
            string liClass "";
            string ulClass "";
           
            if (itemIndex == 1firstLast += "first "}
            if (itemIndex == itemCountfirstLast += "last"
           
            if (selected != String.Empty |firstLast != String.EmptyliClass " class=\"" selected firstLast"\""}
            if (firstLast != String.EmptyulClass " class=\"" firstLast "\""}
           
            <li@Html.Raw(liClass)>
              @{
                if (item.hideLink.GetType(== typeof(umbraco.MacroEngines.DynamicNull|item.hideLink == false<href="@item.Url">@item.Name</a}
                else <span>@item.Name</span}
                
                if (item.Children.Where("Visible").Count(0<ul@Html.Raw(ulClass)>@traverse(itemminLevelmaxLevel)</ul}
              }
            </li>
          }
        }
        </ul>
      }
      
    }

    @helper traverse(dynamic nodeint minLevelint maxLevel){
        
      // Get list of visible child items for this node.
      var items node.Children.Where("Visible").Where("Level <= " maxLevel.ToString()).Where("Level >= " minLevel.ToString());
                                                    
      int itemCount items.Count();
      int itemIndex 0;
                                                             
      // Loop through each item create link and check again for child items.
      foreach (var item in items)
      {
        itemIndex++;
        string selected Array.IndexOf(Model.Path.Split(',')item.Id.ToString()>= "selected " "";
        string firstLast "";
        string liClass "";
        string ulClass "";
       
        if (itemIndex == 1firstLast += "first "}
        if (itemIndex == itemCountfirstLast += "last"}
       
        if (selected != String.Empty |firstLast != String.EmptyliClass " class=\"" selected firstLast"\""}
        if (firstLast != String.EmptyulClass " class=\"" firstLast "\""}
                                 
        <li@Html.Raw(liClass)>
          @{
              if (item.hideLink.GetType(== typeof(umbraco.MacroEngines.DynamicNull|item.hideLink == false
              {
                  string newCar string.Empty;
                  if (item.carThumbnail.GetType(== typeof(System.Int32))
                  {
                      newCar item.NodeTypeAlias == "NewCar" &item.carThumbnail.ToString(!= String.Empty "rel=\"" ((dynamic)new DynamicMedia(item.carThumbnail)).umbracoFile " \"" String.Empty;
                  }
                  else 
                  {
                      newCar item.NodeTypeAlias == "NewCar" &item.carThumbnail.ToString(!= String.Empty "rel=\"" item.carThumbnail " \"" String.Empty;
                  }
                <href="@item.Url" @Html.Raw(newCar@Html.Raw(newCar != String.Empty "class=\"newCarPop\"" "")>@item.Name</a
              }
              else <span>@item.Name</span}
       
              if (item.Children.Where("Visible").Count(0<ul@Html.Raw(ulClass)>@traverse(itemminLevelmaxLevel)</ul}
          }
        </li>
        }
      
    }
  • Paul Stewart 50 posts 71 karma points
    Mar 07, 2012 @ 11:00
    Paul Stewart
    0

    Mean I thought something Model.NodeById(1000).Children() would be the query but am not sure how to go about it? any advice would be helpful. 

Please Sign in or register to post replies

Write your reply to:

Draft