ページ 1 / 1
リスト項目の数を数えるには?
Posted: 2007年2月08日(木) 15:20
by さとう
お世話になっております。
xsl(デザイン定義)側で、リスト項目(list項目)の数を取得する方法はありますか?
Re: リスト項目の数を数えるには?
Posted: 2007年2月08日(木) 22:06
by webmaster
さとうさん、いつもお世話になっております。
ご質問ありがとうございます。
リスト項目ないしエントリ数等、xsl:for-eachで「繰り返す」事のできる項目の数を
数えるには、xsltのcount関数を使用することができます。
例えば shops というリスト項目があるとすると、
<xsl:value-of select="count(shops/itemlist)" />
で、shopsの項目数を表示することができます。
ご質問の意図とズレていましたらご指摘下さい。
2つの数字を足すには?
Posted: 2007年2月09日(金) 04:29
by さとう
ありがとうございます。
上手くいきました。
(itemlistをlistitemに直しました)
もう1点質問があります。
今回の目的は「エントリごとの画像の数を一覧ページに表示したい」というものです。
問題は、今回のスキーマで「メイン画像」と「サブ画像」の2種類があり、
メイン画像には「type="img"」、サブ画像には「type="list"」を使っている事です。
メイン画像は「xsl:if」で画像がある/ない(1枚 or 0枚)を判断できます。
サブ画像は「count」で枚数を数えられました。
この2つの数字を足すことは出来ますか?
「カテゴリ毎の件数」が変な数になる
Posted: 2007年2月09日(金) 04:40
by さとう
もう一つ質問させていただきます。
カテゴリ毎の件数を出力する/メニュー項目選択肢をデザイン定義に読み込む
http://cms.al-design.jp/phpbb/viewtopic ... ight=count
このトピックを見つけて試行錯誤しています。
メニュー項目を読み込むところまでは出来たのですが、
カテゴリ毎の件数が変な数字になってしまいます。
http://www.03interior.com/shop_list.php
このページ左下の「エントリ件数取得テスト1」という部分です。
他のメニュー項目や、別のフォルダ(別のスキーマ)でも試しましたが、
同じように件数が変になります。
別トピックにあるtsuさんのコードでも同じ結果でした。
何か思い当たる事がありましたらアドバイスお願いします。
Posted: 2007年2月09日(金) 15:01
by さとう
上記「2つの数字を足すには?」について、
簡単な方法を思いついて、自己解決しました。
「xsl:if」でメイン画像の「ある/なし」を調べて、
あった場合は1を足して出力します。
コード: 全て選択
<xsl:if test="photo1/text()">
<xsl:value-of select="count(photo2/listitem)+1" />Photos
</xsl:if>
<xsl:if test="not(photo1/text())">
<xsl:value-of select="count(photo2/listitem)" />Photos
</xsl:if>
ちょっとしたことですが、だんだんxslが楽しくなってきました。
XSLTを覚えればもっと色々なことができるんでしょうか?
これ以上踏み込むのはかなり難しそうですが・・・。
「カテゴリ毎の件数」が変な数になる件もお手上げです。
よろしくお願いします。
Posted: 2007年2月14日(水) 15:51
by webmaster
webmasterです。
お返事が大変遅くなり、申し訳ありません。
「2つの数字を足すには?」の件は、さとうさんの方法が簡単かつ確実で良い方法
かと思います。
もう一つのカテゴリごとの件数についてですが、基本的にはさとうさんも引用して
下さった、
http://cms.al-design.jp/phpbb/viewtopic.php?t=546 のページ
で説明した通りです。
ひょっとすると、埋め込みタグ側の方で不要な指定をしている可能性があります
ので、埋め込みタグを貼り付けて頂いてよろしいでしょうか。
既に解決済みでしたら、申し訳ありません。
Posted: 2007年2月16日(金) 03:32
by さとう
埋め込みタグの方で絞込みをしていないか?ということですよね。
絞り込みはしていません。
一番シンプルなタグです↓
コード: 全て選択
<cmsd:entrylist name="shoptokyo" design="menu_test"/>
・・・原因が判りました!
このフォルダのエントリは全部で50件以上あるのに、
「rows」で表示件数の指定をしていなかったため、
最初の10件分しか集計していなかったようです。
コード: 全て選択
<cmsd:entrylist name="shoptokyo" design="menu_test" rows="100"/>
このコードで上手くいきました。
ありがとうございました。
Posted: 2007年2月16日(金) 09:06
by webmaster
webmasterです。
なるほど! そういうことでしたか・・・!
すいません、もっと早く気づくべきでした。
なにはともあれ解決してよかったです。