0

結合しようとしている2つの別々のコードがあります。

1つ目は、子ページの数をカウントし、数を表示します。

例: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つの新しいページ)を表示する方法がわかりません。

誰か助けてもらえますか?乾杯、JV

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

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