我的Umbraco网站上有一个内容元素,我想将其用作文档树另一部分内容的容器。
如下图所示,我需要在/ Content / Frontpage标签/精选页面节点中引用/ Content / Personal Site / Blog节点下的所有子页面。
我借用的XSLT工作正常,如果我把它放在“个人网站”节点下面的页面上,但是从“Frontpage Tabs”下面没有产生任何结果。我猜是因为currentPage遍历那棵树而不是个人站点。
XSLT看起来像这样:
<xsl:param name="currentPage"/>
<xsl:variable name="numberOfPosts" select="3"/>
<xsl:variable name="level" select="1"/>
<xsl:variable name="pageNumber">
<xsl:choose>
<xsl:when test="umbraco.library:RequestQueryString('page') <= 0 or string(umbraco.library:RequestQueryString('page')) = '' or string(umbraco.library:RequestQueryString('page')) = 'NaN'">1</xsl:when>
<xsl:otherwise>
<xsl:value-of select="umbraco.library:RequestQueryString('page')"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="numberOfRecords" select="3" />
<xsl:template match="/">
<xsl:if test="$currentPage [name() = 'umbDateFolder']">
<h2 class="page-title">
Monthly Archives: <xsl:value-of select="umbraco.library:FormatDateTime(concat($currentPage/../@nodeName,'-',$currentPage/@nodeName,'-11T10:24:46'),'MMMM yyyy')"/>
</h2>
</xsl:if>
<xsl:for-each select="$currentPage/ancestor-or-self::umbBlog//umbBlogPost">
<xsl:sort select="./PostDate" order="descending" />
<xsl:if test="position() > $numberOfPosts * (number($pageNumber)-1) and
position() <= number($numberOfPosts * (number($pageNumber)-1) +
$numberOfPosts )">
<ul>
<xsl:call-template name="showpost">
<xsl:with-param name="post" select="."/>
</xsl:call-template>
</ul>
</xsl:if>
</xsl:for-each>
</xsl:template>
<xsl:template name="showpost">
<xsl:param name="post"/>
<li>
<div class="excerpt">
<a class="header" href="{umbraco.library:NiceUrl($post/@id)}" title="{$post/@nodeName}">
<xsl:value-of select="$post/@nodeName" />
</a>
<xsl:value-of select="$post/bodyText" disable-output-escaping="yes" />
</div>
<a class="link-button" href="{umbraco.library:NiceUrl($post/@id)}">Read more</a>
</li>
我需要改变一些明显的东西,但是我对XSLT并不是很精通,所以非常感谢任何帮助。
答案 0 :(得分:2)
您应该在宏中创建一个contentpicker类型参数(例如,命名为&#34; source&#34;),并使用此参数的值作为容器节点的ID而不是currentPage。我经常使用这个技巧,它可以很好地工作,并允许您更改管理后台中的节点。
答案 1 :(得分:1)
您应该创建一个新变量,它将成为节点“个人网站”,然后获取所有子节点。 要创建此节点,可以使用web.config中的键添加其ID。