【问题标题】:(Umbraco) How can I list related pages by tags?(Umbraco) 如何按标签列出相关页面?
【发布时间】:2013-08-16 21:59:37
【问题描述】:

在我网站的最后一个节点是显示文章的地方,每个人都有自己的标签,当然其中一些标签可以是相同的,所以我为正在工作的标签编写了一个宏(它列出了标签用户正在查看的文章),我已将 Tag 数据类型用于我的“文章”文档类型,并且该宏可以正常工作;但我写的宏有问题列出那些具有相同标签的文章,我称之为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)

【问题讨论】:

    标签: xslt umbraco related-content umbraco-tags


    【解决方案1】:

    相关内容的代码使用旧的 XML 模式。

    替换这个位:

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

    /node 元素在 4.6+ 架构中不存在,将元素名称替换为 documentTypeAlias 的名称。

    因此,如果您的文档类型为 article,其属性为 articleTitle,它将是这样的:

    $currentPage/article/
    $currentPage/article/articleTitle
    

    而不是旧架构(这对于 4.5 以上的任何内容都不正确)

    $currentPage/node[@nodeTypeAlias = 'article']
    $currentPage/node[./data[@alias] = 'articleTitle']
    

    您可以在 Umbraco wiki 上查看这两种模式之间的区别:

    http://our.umbraco.org/wiki/reference/xslt/45-xml-schema

    【讨论】:

      猜你喜欢
      • 2016-08-25
      • 1970-01-01
      • 2014-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      相关资源
      最近更新 更多