如何在c#中使用菜单项作为标题
本文关键字:菜单项 标题 | 更新日期: 2023-09-27 18:00:36
我在这里使用导航菜单的修改(演示#2)
http://tympanus.net/Development/MultiLevelPushMenu/index2.html
该网站与Sitecore绑定,因此整个网站都有FieldRenderer和Literals。
正如您所看到的,当用户打开菜单并单击链接时,菜单会切换,标题会被推到顶部。我的问题是,所有这些都被硬编码到菜单中。当用户点击h2标签中的一个菜单项时,有没有一种方法可以让我使用C#方法或Javascript函数,这样标题就不会硬编码到菜单中,而是出现在h2标签中?我基本上遵循了编写的导航菜单,只是我使用了ListViews,而不是硬编码的li标记。
<ul class="main-menu">
<li class="something">
<div class="mp-level">
<h2 class="icon icon-world">Item 1</h2>
<a class="mp-back" href="#">Back</a>
<ul class="test">
<asp:ListView ID="Copys" runat="server" ItemPlaceholderID="CopysTemplate"
OnItemDataBound="Copys_ItemDataBound">
<LayoutTemplate>
<asp:PlaceHolder ID="CopysTemplate" runat="server"></asp:PlaceHolder>
</LayoutTemplate>
<ItemTemplate>
<li class="header-item" runat="server" id="CopysItem">
<asp:HyperLink ID="HeadsLink" runat="server"></asp:HyperLink></li>
</ItemTemplate>
</asp:ListView>
</ul>
</div>
</li>
</ul>
我不确定这是否是你想要的,但通常可以调用Sitecore.Context.Item来获取你所在的当前页面。如果你试图将当前页面的标题拉到菜单中,这可能是你的最佳选择。一旦你有了项目,你就可以呈现出标题的任何字段。
不完全确定这个问题,但据我所知,您希望将sitecore数据源项的标题注入到您的h2DOM元素的文本中。其中之一你遗漏的最重要的信息是什么类型的从中获取数据的项目。但我还是会尽力帮你的。
布局级别:
//Code behind of layout file
Sitecore.Data.Items.Item scTitle = Sitecore.Context.Item;
<!--Front End of layout file -->
<h2 class="icon icon-world"><%=scTitle.Fields["TitleFieldName"] != null ? scTitle.Fields["TitleFieldName"].Value : "Some Fallback Value"%></h2>
子布局级别:
//Code behind of sublayout file
Sitecore.Data.Items.Item scTitle = Sitecore.Context.Database.GetItem(((Sublayout)Parent).DataSource);
<!--Front End of sublayout file -->
<h2 class="icon icon-world"><%=scTitle.Fields["TitleFieldName"] != null ? scTitle.Fields["TitleFieldName"].Value : "Some Fallback Value"%></h2>
有一些工具,如GlassMapper,可以使引用数据源及其字段更干净一些。但这是可行的。