絞り込み条件に適合するエントリがないときにメッセージを表示させたい

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

絞り込み条件に適合するエントリがないときにメッセージを表示させたい

投稿記事 by sal » 2007年9月12日(水) 18:25

いつもお世話になっております。現在、HPを作成しているのですが、
ユーザー管理画面で、トピックを何個か登録していき、その中のいくつかを
ピックアップしたものだけを一覧で表示させたく、スキーマファイルに
メニュー項目で、

<data name="pickup" type="menu" caption="ピックアップ選択" group="True">
<menuitem id="pick">ピックアップスする</menuitem>
<menuitem id="nopick">ピックアップしない</menuitem>
</data>

上記の様に選択させ、デザイン定義で、

<cmsd:entrylist name="topic" design="spot">
<cmsd:group key="pickup" value="pick" />
</cmsd:entrylist>

上記の様に埋めこみました。
その際に、もし全てのトピックが『ピックアップしない』を選択した場合、
『現在ピックアップはありません』というような文章を表示させたいのですが、
うまくいきません。下記URLの質問内容でためしてみたのですが、
うまく動作しませんでした。

http://cms.al-design.jp/phpbb/viewtopic ... 9%FE%A4%DF

<menuitem id="pick">が0の時か、
もしくは全てのトピックが<menuitem id="nopick">の際に、
『ピックアップはありません』という文章を表示させるには
どのようにすればよいのでしょうか?
よろしくお願い致します。

sal
アクティブユーザー
記事: 23
登録日時: 2006年11月20日(月) 11:53

もう一つ聞きたいのですが

投稿記事 by sal » 2007年9月13日(木) 12:00

すみません、もう一つ質問させて下さい。
絞り込み検索をさせた際に、
検索結果=X件のように、数字で検索数を表示させるには
どのようにしたらできるのでしょうか?
どうぞよろしくお願い致します

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

Re: 絞り込み条件に適合するエントリがないときにメッセージを表示させたい

投稿記事 by webmaster » 2007年9月13日(木) 14:02

 salさん、ご質問ありがとうございます。

 絞込み結果が0件だった場合の表示ですが、引用して頂いているURLのページが
回答となります。

 これでうまく行かないということなのですが、具体的にはどのような結果になって
いるでしょうか。
 何かエラーが出ているでしょうか。
 それとも、絞込み結果0件にも関わらず、意図したメッセージが出ない、という
感じでしょうか。
 よろしければ作成したデザイン定義の一部を引用して頂けると助かります。


 もう一つのご質問ですが、全件数については navi/@allcount で取得可能です。
 次のように、xsl:template match="entrylist" の下に置いて下さい。

コード: 全て選択

<xsl:template match="entrylist">
  <xsl:value-of select="navi/@allcount" />件の記事があります。
  :
 xsl:for-each select="entry"の内部で使う場合には、

コード: 全て選択

  <xsl:value-of select="/entrylist/navi/@allcount" />件の記事があります。
 のようにして下さい。

sal
アクティブユーザー
記事: 23
登録日時: 2006年11月20日(月) 11:53

投稿記事 by sal » 2007年9月13日(木) 16:56

お返事ありがとうございます。
検索数の表示に関しては、問題なく解消致しました。

該当するトピックがない場合、「トピックはありません」の表示をさせる件に関してですが、
引用URLのページを参考に下記のコードの様に、記述したのですが、
エントリがある場合でも無い場合でも
〜エントリ無し時の出力〜が表示されてしまいます。
試しに、</xsl:for-each>のすぐ下に記述した場合、
〜エントリ無し時の出力〜の文字は表示されませんでした。

コード: 全て選択

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="html" encoding="EUC-JP" omit-xml-declaration="yes" />
  <xsl:template match="entrylist">

<table>
<xsl:for-each select="row">

<tr>
<xsl:for-each select="entry">
<td width="110" align="left" valign="top">
<xsl:if test="mainphoto=''"><img src="images/noimage.jpg" width="110" height="83" alt="no image" border="0" /></xsl:if>
<xsl:if test="not(mainphoto='')">
<img src="{mainphoto}&w=110&h=110" alt="{title}" border="0"/>
</xsl:if>
</td>
</xsl:for-each>
</tr>

</xsl:for-each>
</table>

 <xsl:if test="count(entry)=0">
 〜エントリ無し時の出力〜
 </xsl:if> 


  </xsl:template>
</xsl:stylesheet>
html側では、前にも書きましたが下記の様に記述してあります。

コード: 全て選択

<cmsd:entrylist name="topic" design="spot"> 
<cmsd:group key="pickup" value="pick" /> 
</cmsd:entrylist> 
よろしくお願い致します

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

投稿記事 by webmaster » 2007年9月13日(木) 17:50

 salさん、お返事ありがとうございます。

 貼り付けて頂いたデザイン定義に関して気になる点があります。

コード: 全て選択

 <xsl:for-each select="row">
 の記述があるのですが、これは、テーブル形式でエントリを出力したい
場合の方法です。
 詳しくはこちらをご覧下さい。
 http://cms.al-design.jp/phpbb/viewtopic.php?t=448

 この方法を使いたい場合、埋め込みタグ側に「cols="2以上の数"」などの指定を
一緒に指定しないと、無効どころかそれ以下の出力が行われないと思うのですが、
拝見する限り、埋め込みタグにcols属性は指定されていないようです。

コード: 全て選択

<cmsd:entrylist name="topic" design="spot">
<cmsd:group key="pickup" value="pick" />
</cmsd:entrylist>
 この埋め込みタグとあのデザイン定義の組み合わせですと、エントリ内容が
出力されないはずなのですが、出力されているでしょうか?

 しかし、貼り付けて頂いたデザイン定義を拝見すると、

コード: 全て選択

<xsl:if test="count(entry)=0">
 〜エントリ無し時の出力〜
 </xsl:if> 
 の記述が、rowsのfor-eachの外に配置されているので、もし本当にcols属性が
指定されていないのであれば、この部分は正しく動作するはずです。

 エントリがあってもなくても「〜エントリ無し時の出力〜」が出力される
ということから想像するに、

・実際には埋め込みタグにはcols属性に2以上が指定されている。

 ということなのではないかと思います。

 それを前提にしますと、このままでは確かにうまく動作しないかと思います。
 (colsが指定されている時の事を失念しておりました。)

コード: 全て選択

 <xsl:if test="/entrylist/navi/@allcount=0">
 〜エントリ無し時の出力〜
 </xsl:if> 
 これで代用してみて下さい。
 こちらの方が、より汎用的な書き方になります。

sal
アクティブユーザー
記事: 23
登録日時: 2006年11月20日(月) 11:53

表示できました

投稿記事 by sal » 2007年9月13日(木) 18:25

お返事ありがとうございます。

ご指摘のようにいたしましたら、無事表示をさせることができました。

確かに、実際のファイルには埋め込みタグにcols属性が入っています。
質問をする際に、サンプルコードをできるだけシンプルにしようとして、
削除をしておいてから載せていましたが、こちらの部分がキモだったんですね。

どうもありがとうございました。

返信