リスト項目の数を数えるには?

「まったく何も分からない・・・」そんなユーザーさんの為のフォーラムです。どんなご質問でもお気軽にどうぞ。
返信
さとう
アクティブユーザー
記事: 24
登録日時: 2007年2月01日(木) 21:22

リスト項目の数を数えるには?

投稿記事 by さとう » 2007年2月08日(木) 15:20

お世話になっております。

xsl(デザイン定義)側で、リスト項目(list項目)の数を取得する方法はありますか?

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: リスト項目の数を数えるには?

投稿記事 by webmaster » 2007年2月08日(木) 22:06

 さとうさん、いつもお世話になっております。
 ご質問ありがとうございます。

 リスト項目ないしエントリ数等、xsl:for-eachで「繰り返す」事のできる項目の数を
数えるには、xsltのcount関数を使用することができます。

 例えば shops というリスト項目があるとすると、

<xsl:value-of select="count(shops/itemlist)" />

 で、shopsの項目数を表示することができます。

 ご質問の意図とズレていましたらご指摘下さい。

さとう
アクティブユーザー
記事: 24
登録日時: 2007年2月01日(木) 21:22

2つの数字を足すには?

投稿記事 by さとう » 2007年2月09日(金) 04:29

ありがとうございます。
上手くいきました。
(itemlistをlistitemに直しました)

もう1点質問があります。
今回の目的は「エントリごとの画像の数を一覧ページに表示したい」というものです。
問題は、今回のスキーマで「メイン画像」と「サブ画像」の2種類があり、
メイン画像には「type="img"」、サブ画像には「type="list"」を使っている事です。

メイン画像は「xsl:if」で画像がある/ない(1枚 or 0枚)を判断できます。
サブ画像は「count」で枚数を数えられました。

この2つの数字を足すことは出来ますか?
最後に編集したユーザー さとう on 2007年2月09日(金) 15:02 [ 編集 1 回目 ]

さとう
アクティブユーザー
記事: 24
登録日時: 2007年2月01日(木) 21:22

「カテゴリ毎の件数」が変な数になる

投稿記事 by さとう » 2007年2月09日(金) 04:40

もう一つ質問させていただきます。

カテゴリ毎の件数を出力する/メニュー項目選択肢をデザイン定義に読み込む
http://cms.al-design.jp/phpbb/viewtopic ... ight=count

このトピックを見つけて試行錯誤しています。
メニュー項目を読み込むところまでは出来たのですが、
カテゴリ毎の件数が変な数字になってしまいます。

http://www.03interior.com/shop_list.php
このページ左下の「エントリ件数取得テスト1」という部分です。

他のメニュー項目や、別のフォルダ(別のスキーマ)でも試しましたが、
同じように件数が変になります。
別トピックにあるtsuさんのコードでも同じ結果でした。

何か思い当たる事がありましたらアドバイスお願いします。
最後に編集したユーザー さとう on 2007年2月09日(金) 15:04 [ 編集 1 回目 ]

さとう
アクティブユーザー
記事: 24
登録日時: 2007年2月01日(木) 21:22

投稿記事 by さとう » 2007年2月09日(金) 15:01

上記「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が楽しくなってきました。 :D
XSLTを覚えればもっと色々なことができるんでしょうか?
これ以上踏み込むのはかなり難しそうですが・・・。

「カテゴリ毎の件数」が変な数になる件もお手上げです。
よろしくお願いします。 

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

投稿記事 by webmaster » 2007年2月14日(水) 15:51

 webmasterです。
 お返事が大変遅くなり、申し訳ありません。

 「2つの数字を足すには?」の件は、さとうさんの方法が簡単かつ確実で良い方法
かと思います。

 もう一つのカテゴリごとの件数についてですが、基本的にはさとうさんも引用して
下さった、http://cms.al-design.jp/phpbb/viewtopic.php?t=546 のページ
で説明した通りです。

 ひょっとすると、埋め込みタグ側の方で不要な指定をしている可能性があります
ので、埋め込みタグを貼り付けて頂いてよろしいでしょうか。

 既に解決済みでしたら、申し訳ありません。

さとう
アクティブユーザー
記事: 24
登録日時: 2007年2月01日(木) 21:22

投稿記事 by さとう » 2007年2月16日(金) 03:32

埋め込みタグの方で絞込みをしていないか?ということですよね。
絞り込みはしていません。
一番シンプルなタグです↓

コード: 全て選択

<cmsd:entrylist name="shoptokyo" design="menu_test"/>
・・・原因が判りました!
このフォルダのエントリは全部で50件以上あるのに、
「rows」で表示件数の指定をしていなかったため、
最初の10件分しか集計していなかったようです。

コード: 全て選択

<cmsd:entrylist name="shoptokyo" design="menu_test" rows="100"/>
このコードで上手くいきました。
ありがとうございました。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

投稿記事 by webmaster » 2007年2月16日(金) 09:06

 webmasterです。
 なるほど! そういうことでしたか・・・!
 すいません、もっと早く気づくべきでした。

 なにはともあれ解決してよかったです。

返信