如何在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>

如何在c#中使用菜单项作为标题

我不确定这是否是你想要的,但通常可以调用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,可以使引用数据源及其字段更干净一些。但这是可行的。