我有两个独立的代码片段,我正在尝试合并。
第一个计算子页面的数量并显示一个数字:
e.g。 8个子页面(或子页面,如果只有1页)
<xsl:choose>
<xsl:when test="count(child::DocTypeAlias) > 1">
<p><xsl:value-of select="count(child::DocTypeAlias)"/> child pages</p>
</xsl:when>
<xsl:otherwise>
<p><xsl:value-of select="count(child::DocTypeAlias)"/> child page</p>
</xsl:otherwise>
代码检测页面是否在过去30天内创建:
<xsl:variable name="datediff" select="umbraco.library:DateDiff(umbraco.library:ShortDate(umbraco.library:CurrentDate()), umbraco.library:ShortDate(@createDate), 'm')" />
<xsl:if test="$datediff < (1440 * 30)">
<p>New</p>
</xsl:if>
我想将它们组合在一起,这样我就可以获得子页数和“新”页数。
e.g。 8个子页面 - 2个新页面
我尝试过以下操作,但它没有返回正确的值:
<xsl:variable name="datediff" select="umbraco.library:DateDiff(umbraco.library:ShortDate(umbraco.library:CurrentDate()), umbraco.library:ShortDate(@createDate), 'm')" />
<xsl:choose>
<xsl:when test="$datediff < (1440 * 30) and count(child::DocTypeAlias) > 1">
<p><xsl:value-of select="$datediff < (1440 * 30) and count(child::DocTypeAlias)"/> new pages</p>
</xsl:when>
<xsl:otherwise>
<p><xsl:value-of select="$datediff < (1440 * 30) and count(child::DocTypeAlias)"/> new page</p>
</xsl:otherwise>
</xsl:choose>
它返回:“真正的新页面”我不知道如何让它显示数字(2个新页面)。
有人可以帮忙吗?干杯,JV
答案 0 :(得分:1)
仔细查看您为段落指定的内容:
<p>
<xsl:value-of select="
$datediff < (1440 * 30)
and
count(child::DocTypeAlias)"/>
new pages
</p>
你有一个and
,左边是一个布尔值,右边是一个整数。把自己放在处理器的鞋子里:它看起来不是很像你要求它计算布尔值吗?
由于此表达式包含在已经测试日期差异的when
元素中,因此您(几乎可以肯定)不需要重复$ datediff与43200的比较。(我说“几乎可以肯定”因为我认为我不详细了解你的应用程序的逻辑,所以我可能是错的。)我怀疑你想要说的是:
<p>
<xsl:value-of select="count(child::DocTypeAlias)"/>
new pages
</p>
您需要对otherwise
进行类似的更改。
答案 1 :(得分:0)
非常感谢Chriztian Steinmeier:
<!-- The date calculation stuff -->
<xsl:variable name="today" select="umb:CurrentDate()" />
<xsl:variable name="oneMonthAgo" select="umb:DateAdd($today, 'm', -1)" />
<!-- Grab the nodes to look at -->
<xsl:variable name="nodes" select="$currentPage/DocTypeAlias" />
<!-- Pages created within the last 30 days -->
<xsl:variable name="newPages" select="$nodes[umb:DateGreaterThanOrEqual(@createDate, $oneMonthAgo)]" />
<xsl:template match="/">
<xsl:choose>
<xsl:when test="count($newPages)">
<p> <xsl:value-of select="count($newPages)" /> <xsl:text> New Page</xsl:text>
<xsl:if test="count($newPages) > 1">s</xsl:if>
</p>
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
</xsl:template>