Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Ruel Baybayan 6 posts 26 karma points
    Mar 10, 2012 @ 21:50
    Ruel Baybayan
    0

    custom Sitemap Menu (nested menu)

    Hi,
    Im quiet new to UMBRACO and started developing XSLT by modifying the sitemap.
    Unfortunalely, I can't get the things working. Below is the modified code from sitemap xslt.
    I had also attached the expexted output. I appreciate and thank you in advance.

    Ruel

     

    Code Below:

     

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp "&#x00A0;"> ]>

    <xsl:stylesheet 

      version="1.0" 

      xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 

      xmlns:msxml="urn:schemas-microsoft-com:xslt" 

      xmlns:umbraco.library="urn:umbraco.library" xmlns:Exslt.ExsltCommon="urn:Exslt.ExsltCommon" xmlns:Exslt.ExsltDatesAndTimes="urn:Exslt.ExsltDatesAndTimes" xmlns:Exslt.ExsltMath="urn:Exslt.ExsltMath" xmlns:Exslt.ExsltRegularExpressions="urn:Exslt.ExsltRegularExpressions" xmlns:Exslt.ExsltStrings="urn:Exslt.ExsltStrings" xmlns:Exslt.ExsltSets="urn:Exslt.ExsltSets" xmlns:ucomponents.cms="urn:ucomponents.cms" xmlns:ucomponents.dates="urn:ucomponents.dates" xmlns:ucomponents.email="urn:ucomponents.email" xmlns:ucomponents.io="urn:ucomponents.io" xmlns:ucomponents.media="urn:ucomponents.media" xmlns:ucomponents.members="urn:ucomponents.members" xmlns:ucomponents.nodes="urn:ucomponents.nodes" xmlns:ucomponents.random="urn:ucomponents.random" xmlns:ucomponents.request="urn:ucomponents.request" xmlns:ucomponents.search="urn:ucomponents.search" xmlns:ucomponents.strings="urn:ucomponents.strings" xmlns:ucomponents.urls="urn:ucomponents.urls" xmlns:ucomponents.xml="urn:ucomponents.xml" 

      exclude-result-prefixes="msxml umbraco.library Exslt.ExsltCommon Exslt.ExsltDatesAndTimes Exslt.ExsltMath Exslt.ExsltRegularExpressions Exslt.ExsltStrings Exslt.ExsltSets ucomponents.cms ucomponents.dates ucomponents.email ucomponents.io ucomponents.media ucomponents.members ucomponents.nodes ucomponents.random ucomponents.request ucomponents.search ucomponents.strings ucomponents.urls ucomponents.xml ">

     

       <!-- Ouput Schema using UMBRACO 4_711

      (X)HTML-scheme:

       <div id="menu">

           <ul class="menu">

              <li><a href="#" class="parent"><span>level 1</span></a>

                  <div><ul>

                       <li><a href="#" class="parent"><span>level 2</span></a>

                          <div><ul><li><a href="#"><span>level 3</span></a></li></ul></div>

                      </li>

                   </ul></div>

              </li>

              <li class="last"><a href="#"><span>level 1</span></a></li>

           </ul>

       </div>    

       --> 

     

    <xsl:output method="xml" omit-xml-declaration="yes"/>

     

    <xsl:param name="currentPage"/>

     

    <!-- update this variable on how deep your site map should be -->

    <xsl:variable name="maxLevelForSitemap" select="4"/>

     

    <xsl:template match="/">

    <div id="sitemap"> 

    <xsl:call-template name="drawNodes">  

    <xsl:with-param name="parent" select="$currentPage/ancestor-or-self::* [@isDoc and @level=1]"/>  

    </xsl:call-template>

    </div>

    </xsl:template>

     

    <xsl:template name="drawNodes">

      <xsl:param name="parent"/> 

      <xsl:if test="umbraco.library:IsProtected($parent/@id, $parent/@path) = 0 or (umbraco.library:IsProtected($parent/@id, $parent/@path) = 1 and umbraco.library:IsLoggedOn() = 1)">

        <ul>

        <xsl:for-each select="$parent/* [@isDoc and string(umbracoNaviHide) != '1' and @level &lt;= $maxLevelForSitemap]">       

            <choose>

                <!-- Check if the level have child and write class=parent -->

                <xsl:when test="count(./* [@isDoc and string(umbracoNaviHide) != '1' and @level &lt;= $maxLevelForSitemap]) &gt; 0">   

                  <li><a href="{umbraco.library:NiceUrl(@id)}" class="parent">

                        <span><xsl:value-of select="@nodeName"/></span>                                          

                      <xsl:call-template name="drawNodes">    

                         <xsl:with-param name="parent" select="."/>                                                   

                      </xsl:call-template> 

                  </a></li> 

                </xsl:when>

     

                <!-- Class is empty if there is no Child level -->

                <xsl:otherwise>

                    <li>  

                        <a href="{umbraco.library:NiceUrl(@id)}">

                            <xsl:value-of select="@nodeName"/></a>  

                    </li> 

                </xsl:otherwise> 

            </choose>

        </xsl:for-each>

        </ul>

      </xsl:if>

    </xsl:template>

     

    </xsl:stylesheet>

  • This forum is in read-only mode while we transition to the new forum.

    You can continue this topic on the new forum by tapping the "Continue discussion" link below.

Please Sign in or register to post replies