首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Umbraco :页脚菜单True/False属性

Umbraco :页脚菜单True/False属性
EN

Stack Overflow用户
提问于 2013-05-17 23:06:20
回答 2查看 535关注 0票数 1

我尝试使用文档类型Textpage上的新属性showInFooter (True/False)向umbraco6添加一个简单的页脚菜单。

使用以下代码创建xslt文件:

代码语言:javascript
复制
    <?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"/>

<xsl:param name="currentPage"/>

<xsl:template match="/">
<ul>
        <xsl:for-each select="$currentPage/ancestor-or-self::node/descendant-or-self::node/node [string(data[@alias='ShowInFooter']) = '1']">
                <li>                    
                    <a href="{umbraco.library:NiceUrl(@id)}">
                        <xsl:value-of select="@nodeName" />
                    </a>
                </li>
            </xsl:for-each>
</ul>
</xsl:template>

</xsl:stylesheet>

已将宏添加到我的母版页:

代码语言:javascript
复制
<umbraco:Macro Alias="mgzFooterNavigation" runat="server"></umbraco:Macro>

显然,我已经在页脚菜单中想要的页面上勾选了true,但是我没有得到菜单项:-/。

但是我只得到了一个空白的<ul> </ul>.

EN

回答 2

Stack Overflow用户

发布于 2013-05-19 00:25:28

如果您有一个空白的<ul> </ul>,表明您的xsl:for-each不匹配任何内容,那么您可以使用xsl:value-of在for-each中输出任何内容来测试这一点。

所以我猜你在for-each中的select有一个bug。

最有可能的两个bug是你拼错了'ShowInFooter‘(它的首字母是否为小写- Umbraco通常默认为小写)。

其次,你的页脚节点有没有发挥作用?

在恩布拉科的维基(http://en.wikibooks.org/wiki/Umbraco/Various_useful_XSLT_methods_in_Umbraco)中,您可以使用它来运行home下的节点(...并将'myDocType‘替换为主节点的文档类型(假设您的导航都嵌套在主节点下)

代码语言:javascript
复制
xsl:for-each select="$currentPage/ancestor-or-self::root//node [@nodeTypeAlias='myDocType']"

然后,您可以使用xsl:value-of验证您是否在正确的节点上运行。

然后使用您的字段值进行扩展,如下所示:

代码语言:javascript
复制
<xsl:for-each select="$currentPage/ancestor-or-self::root//node [@nodeTypeAlias='myDocType']">
<xsl:variable name="footerItem" select="node[data[@alias='showInFooter'] = '1'">
<xsl:if test="$footerItem">
  <li>                    
    <a href="{umbraco.library:NiceUrl(@id)}">
      <xsl:value-of select="@nodeName" />
    </a>
  </li>
</xsl:if>
</xsl:for-each>
票数 0
EN

Stack Overflow用户

发布于 2013-05-30 19:21:45

我不能得到amelvin的答案来在Umbraco 6中工作。这是我的尝试,它对我有效,但可能不适用于我的设置。

代码语言:javascript
复制
<xsl:variable name="allNodes" select="$currentPage/ancestor-or-self::root//umbTextpage[@isDoc]"/>

<xsl:template match="/">

<ul class="footer-menu">
    <xsl:for-each select="$allNodes">
        <xsl:if test="showInFooter = 1"> 
            <li>
            <a href="{umbraco.library:NiceUrl(@id)}">
            <xsl:value-of select="@nodeName"/>
            </a>
            </li>
        </xsl:if>
    </xsl:for-each>
</ul>

</xsl:template>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16612354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档