简体   繁体   English

umbraco中的导航菜单

[英]Navigation menu in umbraco

I am using umbraco cms. 我正在使用umbraco cms。 here i have a problem in navigation menu for multilingual site. 在这里,我在多语言站点的导航菜单中遇到问题。 my xslt files code is given below. 我的xslt文件代码如下。 it only renders menu in english. 它仅以英语呈现菜单。 i am new to umbraco. 我是umbraco的新手。 so can any one please tell me that where i have to change in this code to make it work correct according to different languages. 所以任何人都可以告诉我,我必须在此代码中进行更改以使其根据不同的语言正确工作。 my code is 我的代码是

<?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>​

You shouldn't be using the $rootPage ever. 您不应该使用$ rootPage。 For multilingual or multisite you want to stop at the home page above the current content ($siteRoot). 对于多语言或多站点,您希望在当前内容($ siteRoot)上方的主页上停止。

It looks like your navigation is selected by a picker on the home page. 您的导航似乎是由主页上的选择器选择的。 Any reason why you don't just let the content tree structure determine the navigation? 为什么不让内容树结构确定导航的任何原因? May be simpler in this case. 在这种情况下可能会更简单。

If this doesn't help, please post your content tree structure example. 如果这样做没有帮助,请发布您的内容树结构示例。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM