在我的网站的最后一个节点是文章的显示位置,每个人都有自己的标签,当然其中一些标签可以是相同的,所以我为一些正在运行的标签写了一个宏(它列出了标签在用户正在查看的文章中,我使用了Tag'数据类型作为我的'文章'doctype,并且该宏正常工作;但我遇到了我编写的用于列出那些具有相同标签的文章的问题,我称之为RelatedContent.xslt
。以下是我在Umbraco TV Tutorials中找到的AllTags.xslt
代码:
<xsl:template match="/">
<div class="tags">
<xsl:variable name="Factor" select="6 div Exslt.ExsltMath:max(tags:getAllTagsInGroup('default')/tags/tag/@nodesTagged)"/>
<xsl:for-each select="tags:getAllTagsInGroup('default')/tags/tag">
<a class="tag{round($Factor * @nodesTagged)}x" href="?tag={.}">
<xsl:value-of select="."/>
</a><br/>
</xsl:for-each>
</div>
</xsl:template>
RelatedContent.xslt的代码是:
<xsl:template match="/">
<ul>
<xsl:for-each select="$currentPage/node [string(data [@alias='umbracoNaviHide']) != '1'] and (umbraco.library:Request('tag') = '' or contains(data [@alias = 'tags'], umbraco.library:Request('tag')))">
<li>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:value-of select="@nodeName"/>
<xsl:value-of select="newsTitle"/>
</a>
</li>
</xsl:for-each>
</ul>
</xsl:template>
我没有找到任何东西可以帮助我理解这一点,所以我无法意识到该怎么做。我将非常感谢你的帮助。谢谢你的建议。
(Umbraco 6.1.3)
答案 0 :(得分:0)
相关内容的代码使用旧的XML Schema。
替换此位:
<xsl:for-each select="$currentPage/node [string(data [@alias='umbracoNaviHide']) != '1']
and (umbraco.library:Request('tag') = '' or contains(data [@alias = 'tags'],
umbraco.library:Request('tag')))">
</xsl:for-each>
使用
<xsl:variable name="tag" select="umbraco.library:Request('tag')"/>
<xsl:for-each select="$currentPage/*[@isDoc][umbracoNaviHide != 1][contains($tag,./tag)]">
</xsl:for-each>
4.6+模式中不存在/ node元素,元素名称将替换为documentTypeAlias的名称。
因此,如果您的文档类型article
具有属性articleTitle
,则可能是这样的:
$currentPage/article/
$currentPage/article/articleTitle
而不是旧架构(这对于4.5以上的任何内容都不正确)
$currentPage/node[@nodeTypeAlias = 'article']
$currentPage/node[./data[@alias] = 'articleTitle']
您可以在Umbraco wiki上看到2个架构之间的区别: