2010-11-04 56 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>