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>

Please Sign in or register to post replies

Write your reply to:

Draft