0

我有两段单独的代码要合并。

第一个计算子页面的数量并显示一个数字:

例如 8 个子页面(或子页面,如果只有 1 个页面)

<xsl:choose>
<xsl:when test="count(child::DocTypeAlias) &gt; 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 &lt; (1440 * 30)">
        <p>New</p>
    </xsl:if>

我想将它们组合起来,这样我就可以获得子页面的数量和“新”页面的数量。

例如 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 &lt; (1440 * 30) and count(child::DocTypeAlias) &gt; 1">
            <p><xsl:value-of select="$datediff &lt; (1440 * 30) and count(child::DocTypeAlias)"/> new pages</p>
        </xsl:when>
        <xsl:otherwise>
            <p><xsl:value-of select="$datediff &lt; (1440 * 30) and count(child::DocTypeAlias)"/> new page</p>
        </xsl:otherwise>
    </xsl:choose>

它返回:“真正的新页面”我不知道如何让它显示数字(2 个新页面)。

任何人都可以帮忙吗?干杯,合资企业

4

2 回答 2

1

仔细查看您为段落指定的内容:

<p>
  <xsl:value-of select="
    $datediff &lt; (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.

于 2012-10-26T15:13:13.563 回答
0

非常感谢克里斯蒂安·施泰因迈尔:

 <!-- 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) &gt; 1">s</xsl:if>
      </p>
    </xsl:when>
    <xsl:otherwise>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>
于 2012-10-29T00:49:01.447 回答