我有一个菜单可以抓取sitecore中url的路径并将其与实际url相匹配。 IE:
Home / Main / Folder / this-is-the-title = www.website.com/this-is-the-title
我要做的是使用"标题" Sitecore中的字段,用于在页面上显示标题而不是路径属性。
HTML
<ItemTemplate>
<div class="leftNavImage">
<li>
<asp:HyperLink ID="innerHyperLink" runat="server" ></asp:HyperLink>
</li>
</div>
</ItemTemplate>
C#
if (innerItem != null)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
// this creates a link to the page in sitecore once clicked
HyperLink topNavigation = (HyperLink)e.Item.FindControl("innerHyperLink");
topNavigation.NavigateUrl = LinkManager.GetItemUrl(innerItem);
topNavigation.Text = innerItem.Name;
}
}
我尝试在Hyperlink之间添加前端,但它所做的就是获取标题并使用所有链接而不是页面链接进行复制。我还尝试在后端设置一个变量来表示Title,但它没有合作,var title = Sitecore.Context.Item [&#34; Title&#34;]。ToString; 。我确定这是一个简单的答案,但我似乎错过了它。
答案 0 :(得分:2)
if (innerItem != null)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
// this creates a link to the page in sitecore once clicked
HyperLink topNavigation = (HyperLink)e.Item.FindControl("innerHyperLink");
topNavigation.NavigateUrl = LinkManager.GetItemUrl(innerItem);
topNavigation.Text = innerItem["Title"];
}
}
答案 1 :(得分:2)
您也可以使用sc:Text
或sc:FieldRenderer
控件并在转发器中设置项目:
<ItemTemplate>
<div class="leftNavImage">
<li>
<asp:HyperLink ID="innerHyperLink" runat="server" >
<sc:Text Field="Title" Item="<%# Container.DataItem %>" runat="server" />
</asp:HyperLink>
</li>
</div>
</ItemTemplate>
如果您想彻底摆脱代码背后的代码,可以将asp:HyperLink
替换为:
<a href="<%# Sitecore.Links.LinkManager.GetItemUrl((Sitecore.Data.Items.Item) Container.DataItem) %>">
<sc:Text Field="Title" Item="<%# Container.DataItem %>" runat="server" />
</a>