エントリ一覧に、先頭から順に1,2,3...と連番を振って表示したい時があるかと思います。
この場合、エントリ一覧のデザイン定義に次の呪文を埋め込んでください。
コード: 全て選択
<xsl:value-of select="position()+((/entrylist/navi/@position)-1)*(/entrylist/navi/@maxpagerows)" />
では使えません。また、連番は表示時に確定するものであり、各エントリに対して
恒久的につけられた番号ではありません。
よって、例えば「作品No.」としてこの連番を使おうとすると、一覧画面では使えても
詳細画面では使えない事になります。あくまで一覧表示時の連番用とお考え下さい。
(エントリのユニークな番号としては、エントリIDが最適です。)
結果だけ欲しい人はこれでOKです。
以下、興味がある方への解説です。
1ページ内に全エントリを表示する場合は、単純に次の方法で連番を表示できます。
コード: 全て選択
<xsl:value-of select="position()" />
CMSDの出力ではentry要素が繰り返し現れるので、entry要素の位置、つまりエントリに対する連番になるわけです。
しかし、ページ切替をする場合には、単純にposition()ではうまくいきません。
なぜならposition()は、今表示されている分に対してしか適用されない為です。つまり、全てのページが1から連番が振られてしまいます。
考え方としては、1ページ当たり10件表示するとして、position() の値に、2ページ目ならば+10、3ページ目なら+20、4ページ目なら+30....としていけば、正しく連番が振られる事になります。
これを式で表すと、次のようになります。
連番 = position() + ( 現在のページ数 - 1 ) × ( 1ページ毎の最大表示件数 )
さらにこれをXSLTの式で表したが下のxsl:value-of要素です。
コード: 全て選択
<xsl:value-of select="position()+((/entrylist/navi/@position)-1)*(/entrylist/navi/@maxpagerows)" />
1ページ毎の最大表示件数は、同じくnavi要素のmaxpagerows属性に入って
います。