2013-02-16 212 views
0

我正在使用umbraco cms。在這裏,我在多語種網站的導航菜單中遇到問題。我的xslt文件代碼如下。它只會呈現英文菜單。我是umbraco的新手。所以任何人都可以告訴我,我必須在這段代碼中改變它,使它根據不同的語言正確工作。我的代碼是umbraco中的導航菜單

<?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" 
    exclude-result-prefixes="msxml umbraco.library Exslt.ExsltCommon Exslt.ExsltDatesAndTimes Exslt.ExsltMath Exslt.ExsltRegularExpressions Exslt.ExsltStrings Exslt.ExsltSets "> 


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

    <xsl:param name="currentPage"/> 
    <xsl:variable name="rootPage" select="$currentPage/ancestor-or-self::root"/> 
    <xsl:variable name="siteRoot" select="$currentPage/ancestor-or-self::*[@level = 1]" /> 
    <xsl:variable name="propertyAlias" select="/macro/PropertyAlias"/> 

    <xsl:template match="/"> 

    <xsl:variable name="homepage" select="$currentPage/ancestor-or-self::Homepage"/> 
    <xsl:variable name="nodeIds" select="umbraco.library:Split($homepage/*[name()=$propertyAlias],',')" /> 


     <ul class="navigation fc"> 
     <xsl:for-each select="$nodeIds/value"> 
     <xsl:variable name="linkNone" select="$rootPage//*[@isDoc][@id = string(current()/.)]"/> 
     <xsl:if test="string-length($linkNone/@id)> 0"> 
     <li> 
      <xsl:attribute name="class"> 
       <xsl:if test="$currentPage/ancestor-or-self::*[@level &gt; 1]/@id = $linkNone/@id"> 
      <xsl:text>selected</xsl:text> 
       </xsl:if> 
       <xsl:if test="position() = last()"> 
       <xsl:text> last</xsl:text> 
       </xsl:if> 

      </xsl:attribute> 

      <xsl:choose> 
      <xsl:when test="string-length($linkNone/umbracoUrlAlias) > 0"> 
       <a href="{$linkNone/umbracoUrlAlias}"> 
       <xsl:value-of select="$linkNone/@nodeName"/> 
       </a> 
       <xsl:if test="position() != last()"> 
       <xsl:text> | </xsl:text> 
       </xsl:if>    
      </xsl:when> 
      <xsl:otherwise> 
       <a href="{umbraco.library:NiceUrl($linkNone/@id)}"> 
       <xsl:value-of select="$linkNone/@nodeName"/> 
       </a> 
       <xsl:if test="position() != last()"> 
       <xsl:text> | </xsl:text> 
       </xsl:if>  
      </xsl:otherwise> 
      </xsl:choose> 

     </li> 
     </xsl:if> 
     </xsl:for-each> 

     </ul> 
    </xsl:template> 

</xsl:stylesheet>​ 
+0

在這種情況下,「正常工作」是指什麼?什麼不適合你? – MiMo 2013-02-16 15:10:30

回答

0

你不應該永遠使用$ rootPage。對於多語言或多站點,您希望停止在當前內容上方的主頁($ siteRoot)。

看起來您的導航是由主頁上的選取器選擇的。爲什麼不讓內容樹結構決定導航?在這種情況下可能會更簡單。

如果這沒有幫助,請發佈您的內容樹結構示例。