2012-07-23 83 views
1

我有一个网站,其页面和子页面如附图所示。 enter image description here如何使用xslt显示站点的站点地图/导航?

某些子页面属于First Pagge(关于Patient Direct),它们设置为“不在菜单中显示”。

好吧,我要让这将生成一个HTML内容像这样的XSLT文件:

菜单项1(包括首页 - 关于患者直接)

-submenu第1页1

菜单项2(包括首页 - 关于患者直接)

-submenu第2页1

-submenu第2页2

我该怎么做?

这是我迄今为止

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

]>

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

<xsl:param name="currentPage"/> 

<!-- Input the documenttype you want here --> 
<xsl:variable name="level" select="1"/> 

<xsl:template match="/"> 

    <xsl:if test="$currentPage/@id = $currentPage/ancestor-or-self::* [@level=$level]/@id"> 
     <div class="column"> 
      <h1> 
       <a href="#"> 
        Home Page - I don't know what to write here 
       </a> 
      </h1> 
      </div>  
    </xsl:if> 

     <xsl:for-each select="$currentPage/ancestor-or-self::* [@level=$level]/* [@isDoc and string(umbracoNaviHide) != '1']"> 
     <div class="column"> 
      <h1> 
       <xsl:choose> 
        <xsl:when test="name() = 'Link'"> 
         <a href="{current()/linkUrl}" target="_blank"> 
          <xsl:value-of select="@nodeName" /> 
         </a> 
        </xsl:when> 
        <xsl:otherwise> 
         <a href="{umbraco.library:NiceUrl(@id)}"> 
          <xsl:value-of select="@nodeName" /> 
         </a> 
        </xsl:otherwise> 
       </xsl:choose> 
      </h1> 
      </div> 
     </xsl:for-each> 

</xsl:template> 

我也打开了http://our.umbraco.org/forum/developers/xslt/33326-How-to-display-sitemapnavigation-for-a-site-using-xslt

回答

3

的讨论,我终于成功了去做 我一直在寻找的东西。这里是为那些谁可能会寻找相同的功能代码

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

]>

<xsl:template name="menu"> 
    <xsl:param name="level"/> 

    <xsl:variable name="RootNode" select="umbraco.library:GetXmlNodeById(1050)" /> 
    <div class="column"> 
     <h1> 
      <a href="{umbraco.library:NiceUrl($RootNode/@id)}" style="width:200px;"> 
       <xsl:value-of select="$RootNode/@nodeName"/> 
      </a> 
     </h1> 
     <xsl:call-template name="submenu_Homepage"> 
     </xsl:call-template> 

    </div> 

    <xsl:if test="count($currentPage/ancestor-or-self::* [@level=$level]/* [@isDoc and string(umbracoNaviHide) != '1']) &gt; '0'"> 
     <xsl:for-each select="$currentPage/ancestor-or-self::* [@level=$level]/* [@isDoc and string(umbracoNaviHide) != '1']"> 
      <div class="column"> 
       <h1> 
        <xsl:choose> 
         <xsl:when test="name() = 'Link'"> 
          <a href="{current()/linkUrl}" target="_blank"> 
           <xsl:value-of select="@nodeName" /> 
          </a> 
         </xsl:when> 
         <xsl:otherwise> 
          <a href="{umbraco.library:NiceUrl(@id)}"> 
           <xsl:value-of select="@nodeName" /> 
          </a> 
         </xsl:otherwise> 
        </xsl:choose> 

       </h1> 

       <xsl:if test="count(current()/* [@isDoc and string(umbracoNaviHide) != '1']) &gt; '0'"> 
        <xsl:call-template name="submenu"> 
         <xsl:with-param name="level" select="$level+1"/> 

        </xsl:call-template> 
       </xsl:if> 
      </div> 
     </xsl:for-each> 
    </xsl:if> 

</xsl:template> 

<xsl:template name="submenu"> 
    <xsl:param name="level"/> 
    <ul class="level_{@level}"> 
     <xsl:for-each select="current()/*[@isDoc and string(umbracoNaviHide) != '1']"> 
      <li> 
       <xsl:if test="position() != last()"> 
        <xsl:attribute name="class">bottom_border</xsl:attribute> 
       </xsl:if> 
       <a href="{umbraco.library:NiceUrl(@id)}"> 
        <xsl:value-of select="@nodeName"/> 
       </a> 
       <!--case when we have third menu level--> 
       <xsl:if test="count(current()/* [@isDoc and string(umbracoNaviHide) != '1']) &gt; '0'"> 
        <xsl:call-template name="submenu"> 
         <xsl:with-param name="level" select="$level+1"/> 
        </xsl:call-template> 
       </xsl:if> 
      </li> 
     </xsl:for-each> 
    </ul> 
</xsl:template> 

<xsl:template name="submenu_Homepage"> 
    <ul> 
     <xsl:for-each select="$currentPage/ancestor-or-self::*/* [@isDoc and string(umbracoNaviHide) = '1']"> 
      <li> 
       <xsl:if test="position() != last()"> 
        <xsl:attribute name="class">bottom_border</xsl:attribute> 
       </xsl:if> 
       <xsl:choose> 
        <xsl:when test="name() = 'Link'"> 
         <a href="{current()/linkUrl}" target="_blank"> 
          <xsl:value-of select="@nodeName" /> 
         </a> 
        </xsl:when> 
        <xsl:otherwise> 
         <a href="{umbraco.library:NiceUrl(@id)}"> 
          <xsl:value-of select="@nodeName" /> 
         </a> 
        </xsl:otherwise> 
       </xsl:choose> 
      </li> 

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

+0

您还可以访问http://how-to-code-net.blogspot.ro/2012/07/how-to-create-sitemap-for-website-in.html了解更多详情 – 2012-07-23 12:09:49