I'm trying to use a sitecore navigation sublayout. Right now I am using 2 different ones. One is used on the parent item and it pulls all of the child items. The other is used on the child items, that just pulls its siblings. I want to use one layout that pulls the parent, child and siblings. The 2 I'm using now is not displaying the Self or Parent item. Here is my code use on the parent
<script runat="server">
void Page_Load(object sender, System.EventArgs e) {
DataBind();
}
IEnumerable<Sitecore.Data.Items.Item> SubItems
{
get {
return Sitecore.Context.Item.Children;
}
}
</script>
<nav class="section">
<asp:Repeater ID="repSubItems" runat="server" DataSource="<%# SubItems%>">
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li>
<a href="<%# Sitecore.Links.LinkManager.GetItemUrl(Container.DataItem as Sitecore.Data.Items.Item) %>">
<sc:FieldRenderer FieldName="Navigation Title" runat="server" Item="<%# Container.DataItem as Sitecore.Data.Items.Item %>" />
</a>
</li>
</ItemTemplate>
<FooterTemplate>
<ul>
</FooterTemplate>
</asp:Repeater>
</nav>
and the nav for the child items pulling siblings
<nav class="section">
<asp:Repeater runat="server" ID="navRepeater">
<HeaderTemplate><ul></HeaderTemplate>
<ItemTemplate>
<li>
<asp:HyperLink runat="server" id="navLink"/>
</li>
</ItemTemplate>
<FooterTemplate></ul></FooterTemplate>
</asp:Repeater>
</nav>
code behing for that one
namespace Layouts.Nav_inner_prog {
public partial class Nav_inner_progSublayout : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
var parent = Sitecore.Context.Item.Parent;
navRepeater.DataSource = parent.Children;
navRepeater.ItemDataBound += navRepeater_ItemDataBound;
navRepeater.DataBind();
}
private void navRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
var item = e.Item.DataItem as Sitecore.Data.Items.Item;
var navLink = e.Item.FindControl("navLink") as HyperLink;
if (item.ID == Sitecore.Context.Item.ID)
{
if (navLink.CssClass.Length > 0)
{
navLink.CssClass += " ";
}
navLink.CssClass += "selected";
}
navLink.Text = item.DisplayName;
navLink.NavigateUrl = Sitecore.Links.LinkManager.GetItemUrl(item);
}
}
}
}