我尝试使用文档类型Textpage上的新属性showInFooter (True/False)向umbraco6添加一个简单的页脚菜单。
使用以下代码创建xslt文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp " "> ]>
<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>已将宏添加到我的母版页:
<umbraco:Macro Alias="mgzFooterNavigation" runat="server"></umbraco:Macro>显然,我已经在页脚菜单中想要的页面上勾选了true,但是我没有得到菜单项:-/。
但是我只得到了一个空白的<ul> </ul>.
发布于 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‘替换为主节点的文档类型(假设您的导航都嵌套在主节点下)
xsl:for-each select="$currentPage/ancestor-or-self::root//node [@nodeTypeAlias='myDocType']"然后,您可以使用xsl:value-of验证您是否在正确的节点上运行。
然后使用您的字段值进行扩展,如下所示:
<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>发布于 2013-05-30 19:21:45
我不能得到amelvin的答案来在Umbraco 6中工作。这是我的尝试,它对我有效,但可能不适用于我的设置。
<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>https://stackoverflow.com/questions/16612354
复制相似问题