2010-11-04 61 views
2

如何使用XSLT创建像这样的Umbraco菜单?使用XSLT为umbraco创建多级菜单?

<ul id="topmenu"> 
    <li><a href="#">top1</a></li> 
    <li><a href="#">top2</a></li> 
    <li><a href="#">top3</a> 
     <ul> 
     <li><a href="#">sub1</a></li> 
     <li><a href="#">sub2</a></li> 
     <li><a href="#">sub3</a></li> 
     </ul> 
     </li> 
     <li><a href="#">top4</a></li> 
     <li><a href="#">top5</a></li> 
</ul>menu like this using XSLT ? 
+0

@ user497447:这是标准XSLT的可能性。也许你会得到一些答案,如果你发布你的输入样本,除了你想要的输出。 – 2010-11-04 17:11:41

回答

7

像这样的东西应该工作。这是基于最初生成的导航XSLT。

<ul class="nav sf-menu"> 
<xsl:for-each select="$currentPage/ancestor-or-self::*[@isDoc and @level=$level]/* [@isDoc and string(umbracoNaviHide) != '1']"> 

    <li> 

    <a href="{umbraco.library:NiceUrl(@id)}"> 
     <xsl:value-of select="@nodeName"/> 
    </a> 
    <xsl:if test="count(./child::*[@isDoc and string(umbracoNaviHide) != '1']) &gt; 0"> 
     <ul> 
     <xsl:for-each select="./child::*[@isDoc and string(umbracoNaviHide) != '1']"> 
      <li> 
      <a href="{umbraco.library:NiceUrl(@id)}"> 
       <xsl:value-of select="@nodeName"/> 
      </a> 
      </li> 
     </xsl:for-each> 
     </ul> 
    </xsl:if> 
    </li> 


</xsl:for-each> 
</ul>