件名の通り、実際に表示されているエントリ数を数える方法がわからず
行き詰まっています。
一つのスキーマで、ニュースとPDF一覧の両方に書き出しをさせている状態で
各エントリには「期」と「一覧に表示」が設定してあります。
少し複雑な絞り込みをさせているので説明がわかりずらいと思いますが
スキーマの設定は「期」は以下のような感じで、「7」などの数字を入れるようになっています。
コード: 全て選択
<data name="ki" type="int" group="True" />
コード: 全て選択
<data name="hyouji" type="menu" caption="表示" group="True">
<menuitem id="1">する</menuitem>
<menuitem id="2">しない</menuitem>
</data>
PDF一覧要のxsl
コード: 全て選択
<xsl:variable name="konki" select="/entrylist/entry[position() = 1]/ki" />
<xsl:for-each select="entry">
<xsl:if test="hyouji='1' and ki=$konki">
−中略 (表示させる内容)−
</xsl:if>
</xsl:for-each>
ここまでは、フォーラムに載っている技を使ってなんとか動くようになったのですが
最新の期が例として7期だとして、7期でニュースにのみ表示させたい(hyoujiが2)
エントリがあった場合、PDF一覧の方の表示が0件になってしまいます。
そこで、その場合は「登録されていません」などのメッセージを出したいのですが
0件であることを調べるための条件式が思いつきませんでした。
上記の方法だと表示をさせるかさせないか、はfor-each内でチェックするから良いのですが、0件の時のメッセージをfor-eachの中に入れるとエントリの数だけメッセージが出てきました。
また、rowsを1にすれば良いのかなと思ったのですが、それだとメッセージが表示される条件でもメッセージが出てきませんでした。
色々な方法を試したのですが、countに複数の条件を入れることもできず
(ki=$konkiでhyouji=1のエントリの数を数えさせたかったのですが)
どうにもうまくいきません。
そこで、色々な条件をentlylistで絞り込むより
実際に表示されている件数を調べることができないか、と思ったのですが
そんなことは可能でしょうか?
もしくは、他に何か良い方法はありますでしょうか?
無理そうれであれば、最終手段としては
コード: 全て選択
<cmsd:entrylist name="news01" design="library" rows="9999">
<cmsd:group key="ki" value="7" />
</cmsd:entrylist>
ただ、これだと、毎年value値を書き換えないといけないのでミスの原因になるためできるだけ動的に処理したいです。
毎回ややこしい質問ばかりで申し訳ありません。