Press Ctrl / CMD + C to copy this to your clipboard.
This post will be reported to the moderators as potential spam to be looked at
Hi all,
I have witten an xslt to shoe a sub menu for level 3 of a menu...
<xsl:variable name="level" select="3"/><xsl:template match="/"><!-- The fun starts here --><div id="navSubMnu"> <ul><xsl:for-each select="$currentPage/ancestor-or-self::* [@level=$level]/* [@isDoc and string(umbracoNaviHide) != '1']"> <li> <a href="{umbraco.library:NiceUrl(@id)}"> <xsl:if test="$currentPage/ancestor-or-self::*/@id = current()/@id"> <xsl:attribute name="class">current</xsl:attribute> </xsl:if> <xsl:attribute name="href"> <xsl:choose> <xsl:when test="count(./*[@isDoc]) > 1 and string(linkToSubpage) = '1'"> <xsl:value-of select="umbraco.library:NiceUrl(./*[@isDoc]/@id)" /> </xsl:when> <xsl:otherwise> <xsl:value-of select="umbraco.library:NiceUrl(@id)" /> </xsl:otherwise> </xsl:choose> </xsl:attribute> <xsl:value-of select="@nodeName"/> </a> </li></xsl:for-each></ul> </div></xsl:template>
I want to modify this to show the sub menu on level 2 also..that is depending on whiche level we are..show the sub menu.
My structure:
default Home About Menu 1 (level 2) Menu 2 (level 2) Menu 3 Sub-menu 1 (level 3) Sub-menu 2 (level 3)
Any help please.
//Sam
give you some code of my site. It will show you how to do it. notice that variable level can set which level you want to show.
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:umbraco.library="urn:umbraco.library"
exclude-result-prefixes="umbraco.library">
<xsl:output method="html" omit-xml-declaration="yes" />
<xsl:param name="currentPage"/>
<xsl:variable name="level" select="0"/>
<xsl:template match="/">
<ul>
<xsl:variable name="root" select="$currentPage/ancestor-or-self::*[@isDoc and @level=1]"/>
<xsl:for-each select="$root/*[@isDoc and navigator=1]">
<xsl:sort select="@sortOrder"/>
<li>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:if test="$currentPage/ancestor-or-self::*[@level=2]/@id=@id">
<xsl:attribute name="class"> active</xsl:attribute>
</xsl:if>
<xsl:value-of select="@nodeName"/>
</a>
<xsl:call-template name="subMenu">
<xsl:with-param name="node" select="."/>
<xsl:with-param name="level" select="$level"/>
</xsl:call-template>
</li>
</xsl:for-each>
</ul>
</xsl:template>
<xsl:template name="subMenu">
<xsl:param name="node"/>
<xsl:param name="level"/>
<xsl:if test="$level=0 or $node/@level < $level">
<xsl:variable name="subItems" select="$node/*[@isDoc and navigator = 1]"/>
<xsl:if test="count($subItems)>0">
<xsl:for-each select="$subItems">
</xsl:stylesheet>
is working on a reply...
Write your reply to:
Upload image
Image will be uploaded when post is submitted
Show sub menu when on corresponding level (2 or 3)
Hi all,
I have witten an xslt to shoe a sub menu for level 3 of a menu...
<xsl:variable name="level" select="3"/>
<xsl:template match="/">
<!-- The fun starts here -->
<div id="navSubMnu">
<ul>
<xsl:for-each select="$currentPage/ancestor-or-self::* [@level=$level]/* [@isDoc and string(umbracoNaviHide) != '1']">
<li>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:if test="$currentPage/ancestor-or-self::*/@id = current()/@id">
<xsl:attribute name="class">current</xsl:attribute>
</xsl:if>
<xsl:attribute name="href">
<xsl:choose>
<xsl:when test="count(./*[@isDoc]) > 1 and string(linkToSubpage) = '1'">
<xsl:value-of select="umbraco.library:NiceUrl(./*[@isDoc]/@id)" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="umbraco.library:NiceUrl(@id)" />
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:value-of select="@nodeName"/>
</a>
</li>
</xsl:for-each>
</ul>
</div>
</xsl:template>
I want to modify this to show the sub menu on level 2 also..that is depending on whiche level we are..show the sub menu.
My structure:
default
Home
About
Menu 1 (level 2)
Menu 2 (level 2)
Menu 3
Sub-menu 1 (level 3)
Sub-menu 2 (level 3)
Any help please.
//Sam
give you some code of my site. It will show you how to do it. notice that variable level can set which level you want to show.
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:umbraco.library="urn:umbraco.library"
exclude-result-prefixes="umbraco.library">
<xsl:output method="html" omit-xml-declaration="yes" />
<xsl:param name="currentPage"/>
<xsl:variable name="level" select="0"/>
<xsl:template match="/">
<ul>
<xsl:variable name="root" select="$currentPage/ancestor-or-self::*[@isDoc and @level=1]"/>
<xsl:for-each select="$root/*[@isDoc and navigator=1]">
<xsl:sort select="@sortOrder"/>
<li>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:if test="$currentPage/ancestor-or-self::*[@level=2]/@id=@id">
<xsl:attribute name="class"> active</xsl:attribute>
</xsl:if>
<xsl:value-of select="@nodeName"/>
</a>
<xsl:call-template name="subMenu">
<xsl:with-param name="node" select="."/>
<xsl:with-param name="level" select="$level"/>
</xsl:call-template>
</li>
</xsl:for-each>
</ul>
</xsl:template>
<xsl:template name="subMenu">
<xsl:param name="node"/>
<xsl:param name="level"/>
<xsl:if test="$level=0 or $node/@level < $level">
<xsl:variable name="subItems" select="$node/*[@isDoc and navigator = 1]"/>
<xsl:if test="count($subItems)>0">
<ul>
<xsl:for-each select="$subItems">
<li>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:value-of select="@nodeName"/>
</a>
<xsl:call-template name="subMenu">
<xsl:with-param name="node" select="."/>
<xsl:with-param name="level" select="$level"/>
</xsl:call-template>
</li>
</xsl:for-each>
</ul>
</xsl:if>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
is working on a reply...