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