Tuesday, August 13, 2019
Sitemap considerations and simple sitemap
1. Navigable items only insitecore or have 'Include in Sitemap' checkbox?
2. Dynamically built pages too or just static ones?
3. Paging vs expandable ul's
==== Simple sitemap in view rendering ===
@using Sitecore.Data
@using System.Linq
<style>
.collapsible {
padding: 0 18px;
border: none;
text-align: left;
outline: none;
font-size: 15px;
}
.active, .collapsible:hover {
/*background-color: #555;*/
}
.collapsible:after {
content: '\002B';
color: black;
font-weight: bold;
float: left;
margin-left: 5px;
padding-right: 10px;
}
.active:after {
content: "\2212";
}
.content {
padding: 0 18px;
transition: max-height 0.2s ease-out;
background-color: #f1f1f1;
}
</style>
@{
var root = Sitecore.Context.Database.GetItem("{75FA5F04-37E4-4688-A771-B1E11E03D4E0}");
<div class="max-w-col-12 mx-auto">
<ul class="pl-3">
<li class="pl-3 mb-2">
<div>
<a href="@Sitecore.Links.LinkManager.GetItemUrl(root)">@root.Name</a>
</div>
<div class="content">
@RecursiveSitemap(root)
</div>
</li>
</ul>
</div>
}
@helper RecursiveSitemap(Sitecore.Data.Items.Item parentItem)
{
{
Sitecore.Collections.ChildList childList = parentItem.Children;
foreach (Sitecore.Data.Items.Item child in childList)
{
if (((child.Fields[Sitecore.FieldIDs.LayoutField] != null || !string.IsNullOrEmpty(child.Fields[Sitecore.FieldIDs.LayoutField].Value))
|| child.TemplateID == new ID("{A87A00B1-E6DB-45AB-8B54-636FEC3B5523}")) // folder
&& child.ID != new ID("{85925816-7367-49C8-ADE2-71603ED3A2EF}") //checkout
&& child.ID != new ID("{A4215491-31E2-4743-BBF0-BDA9FD64461D}") //Global folder
&& child.ID != new ID("{47F07D3E-AEC4-430C-94EC-2B5A48920064}") //Quote
&& child.ID != new ID("{877AB148-05BE-4CDE-AD42-9675AE3179DC}") //Cart
&& child.TemplateID != new ID("{A8A09E8A-989D-4C84-9FF9-3812F97D1879}") // data folder template
&& child.TemplateID != new ID("{9EA673A6-879F-40D0-A4AE-BF8A02B132CD}") // 404 page template
&& child.TemplateID != new ID("{CA0CBE21-F27E-48BE-A3C4-45C4A27639CD}"))// gene landing page template
{
string itemName = child.Name;
string liClass = "";
if (child.GetChildren().ToList().Where(x => x.TemplateID != new ID("{A8A09E8A-989D-4C84-9FF9-3812F97D1879}")).Count() > 0)
{
liClass = "collapsible";
}
<li class="pl-3 mb-2">
<div class="@liClass">
@if (child.TemplateID != new ID("{A87A00B1-E6DB-45AB-8B54-636FEC3B5523}"))
{
<a href="@Sitecore.Links.LinkManager.GetItemUrl(child)">@itemName ></a>
}
else
{
<span>@itemName</span>
}
</div>
@if (child.GetChildren().ToList().Where(x => x.TemplateID != new ID("{A8A09E8A-989D-4C84-9FF9-3812F97D1879}")).Count() > 0)
{
<div class="content v-hidden">
<ul class="pl-3">
@RecursiveSitemap(child)
</ul>
</div>
}
</li>
}
}
}
}
<script>
$(document).ready(function () {
$('.collapsible').click(function (event) {
var $this = $(this);
var $content = $this.siblings('.content');
if ($content.hasClass('v-hidden')) {
$content.removeClass('v-hidden');
$this.addClass('collapsible active');
$content.slideDown(300);
} else {
$content.slideUp(300);
$content.addClass('v-hidden');
$this.removeClass('active');
}
});
});
</script>
Labels:
SEO
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment