我正在尝试使用站点核心导航子布局。现在我正在使用 2 个不同的。一个用于父项,它会拉出所有子项。另一个用于子项目,它只是拉它的兄弟姐妹。我想使用一种布局来拉动父母、孩子和兄弟姐妹。我现在使用的 2 没有显示 Self 或 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>
以及拉动兄弟姐妹的子项目的导航
<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>
为那个做的代码
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);
}
}
}
}