@inherits umbraco.MacroEngines.DynamicNodeContext
@{
@* Walk up the tree from the current page to get the root node *@
var rootNode = Model.AncestorOrself(1);
}
@*Render the sitemap by passing the root node to the traverse helper*@
<div class="sitemap">
@traverse(@Model.AncestorOrSelf())
</div>
@*Helper method to travers through all descendants*@
@helper traverse(dynamic node){
@*If a MaxLevelForSitemap parameter is passed to the macro, otherwise default to 4 levels*@
var maxLevelForSitemap = String.IsNullOrEmpty(Parameter.MaxLevelForSitemap) ? 4 : int.Parse(Parameter.MaxLevelForSitemap);
@*Select visible children *@
var items = node.Children.Where("Visible").Where("Level <= " + maxLevelForSitemap);
@*If any items are returned, render a list *@
if (items.Any()) {
<ul>
@foreach (var item in items) {
<li class="[email protected]">
<a href="@item.Url">@item.Name</a>
@*Run the traverse helper again *@
@traverse(item)
</li>
}
</ul>
}
}
Got code from Dennis Aaen answer -https://our.umbraco.org/forum/developers/razor/47368-Sitemap-HTML
The code that Alex have linked to from one of my old post uses the old dynamic node razor, which is deprecated.
Here is an updated codesnippet that uses dynamic Razor.
@{ 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>
}
}
HTMLised Sitemap?
How to implement HTMLised sitemap
any Idea?
Hi Sagar,
Try to use code snippet:
Got code from Dennis Aaen answer -https://our.umbraco.org/forum/developers/razor/47368-Sitemap-HTML
THanks
Not working,
some error in the code. So it is hitting my custom 404 page . :(
Hi Sagar,
The code that Alex have linked to from one of my old post uses the old dynamic node razor, which is deprecated.
Here is an updated codesnippet that uses dynamic Razor.
Hope this helps,
/Dennis
Thnxx Dennis, it is working perfectly. :)
is working on a reply...