Individual Class/ID Names for Mega Menu
First of all, I'm using Sitefinity 7.0. I'm trying to create a mega menu in sitefinity. In the pages section every page is listed in hierarchy. I created my own navigation widget to display every page and child page that I want in my mega menu. This is my widget code:
<%@ Control Language="C#" %><%@ Import Namespace="Telerik.Sitefinity.Web.UI.NavigationControls.Extensions.LightNavigationControlTemplate" %><%@ Import Namespace="Telerik.Sitefinity.Web.UI.NavigationControls" %><%@ Register Assembly="Telerik.Sitefinity" TagPrefix="navigation" Namespace="Telerik.Sitefinity.Web.UI.NavigationControls" %><%@ Register Assembly="Telerik.Sitefinity" TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI" %><sf:ResourceLinks runat="server" UseEmbeddedThemes="true" Theme="Basic"> <sf:ResourceFile Name="Telerik.Sitefinity.Resources.Themes.Basic.Styles.nav.widget.css" Static="true" /></sf:ResourceLinks><navigation:SitefinitySiteMapDataSource runat="server" ID="dataSource" /><sf:SitefinityLabel id="title" runat="server" WrapperTagName="div" HideIfNoText="true" HideIfNoTextMode="Server" /><div class="sfNavWrp sfNavHorizontalSiteMapWrp <%= this.GetCssClass() %>"> <%-- responsive design section - renders templates for the responsive design--%> <navigation:NavTransformationTemplate runat="server" TransformationName="ToToggleMenu" TemplateName="ToggleMenu" /> <navigation:NavTransformationTemplate runat="server" TransformationName="ToDropDown" TemplateName="Dropdown" /> <%--end of the responsive design section --%> <ul class="sfNavHorizontalSiteMap sfNavList"> <navigation:NavigationContainer runat="server" DataSourceID="dataSource" > <Templates> <navigation:NavigationTemplate> <Template> <li class="first"> <a runat="server" class="mainPage" href='<%# NavigationUtilities.ResolveUrl(Container.DataItem) %>' target='<%# NavigationUtilities.GetLinkTarget(Container.DataItem) %>'><%# Eval("Title") %></a> <ul class="firstUl" runat="server" id="childNodesContainer"></ul> </li> </Template> </navigation:NavigationTemplate> <navigation:NavigationTemplate Level="5"> <Template> <li class="second"> <a runat="server" class="secondPage" href='<%# NavigationUtilities.ResolveUrl(Container.DataItem) %>' target='<%# NavigationUtilities.GetLinkTarget(Container.DataItem) %>'><%# Eval("Title") %></a> </li> </Template> </navigation:NavigationTemplate> </Templates> </navigation:NavigationContainer> </ul></div> Hello Michelle,
The navigation widget could be customized the way you need and I advise you to consult our documentation article here: Styling and customizing the Navigation widget
If you need to have a unique class for each page you can try, instead of class="mainPage" to set it class='<%# Eval("Title") %>'
Another option is to use some javascript or create a custom field (if you use 7.0 or later), which will contain the class you need. For your convenience I have also recorded a video.
Third option is to create an extension method, receiving the pageId and based on that will return the page level, which will be assigned as a class.
Hope this information helps.
Regards,
Vassil Vassilev
Telerik
Vassil you are an absolute life/time saver. class='<%#Eval("Title")%>' is exactly what I needed. Thank you so much.
Hello Michelle,
I am glad I managed to help.
Regards,
Vassil Vassilev
Telerik