メニュー項目の全件表示

「まったく何も分からない・・・」そんなユーザーさんの為のフォーラムです。どんなご質問でもお気軽にどうぞ。
返信
blue
パワーユーザー
記事: 70
登録日時: 2005年1月31日(月) 20:49

メニュー項目の全件表示

投稿記事 by blue » 2005年11月29日(火) 20:14

昨日は大変お騒がせしてもうしわけありませんでした<(_ _)>

また質問させてください。
(表題をどう付けて良いやら、曖昧ですみません)
メニュー項目によるグループ絞り込みを行なって、リスト表示の頭にだけ項目名を表示させています。
<xsl:for-each select="group">
<xsl:if test="@key='area'">
<xsl:if test="@value='1'">東京</xsl:if>
<xsl:if test="@value='2'">神奈川</xsl:if>
<xsl:if test="@value='3'">千葉</xsl:if>
・・・
</xsl:if>
</xsl:for-each>
ここまでは巧くいっています。
これに、絞り込みを解除した全件表示のリンクを加えているのですが、
その場合に「全件表示」と表示させたく思い、試しているところです。
試しに
<xsl:if test="@value=''">全件表示</xsl:if>
としてみると、なにも表示されず空欄になってしまいます。
何か良い方法があればお教えくださいませ。

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

Re: メニュー項目の全件表示

投稿記事 by webmaster » 2005年11月30日(水) 01:36

 webmasterです。blueさん、いつもご質問ありがとうございます。

 この件ですが、マニュアルに書いていませんでした。
 すいません。追記しておきます。

 <xsl:if test="not(group)">全件表示</xsl:if>

 これを、<xsl:for-each select="group">の中ではなく外(並列)に
記述することで、ご希望の出力が得られるかと思います。

 絞込み条件そのものを指定しない場合、group情報自体が出力されない為、
上記のような表現になります。

 但し、例えばサンプルの「不動産検索システム」のように、フォームを使って
条件を送信している場合、「選択なし」としても、空のデータが送信される為、
group情報が出力されます。
 よって、その場合にはblueさんの仰る方法でうまくいくかと思います。

 以上、お試し頂いてうまくいかない場合、はずしている可能性がありますので
またご連絡頂ければ幸いです。m(_ _)m

blue
パワーユーザー
記事: 70
登録日時: 2005年1月31日(月) 20:49

投稿記事 by blue » 2005年11月30日(水) 19:14

はずしてなどいません。バッチリでした。ありがとうございます。
ですが、ですが…。申し訳ないです。
直接関係ないと思い、説明が煩雑になると思ったもので、割愛していたのです。
実はgroup key="area"の上にもう1つ絞り込み条件が存在するのです。
全件表示にしてもこの条件は解除されないままなので、
結局"not(group)"には当てはまらないということになり、表示は空欄のまま、ということなのでした :cry:
具体的には埋め込みコマンドで
<cmsd:group key="category" value="1" />
<cmsd:group key="area" />
のようにしていたのです。
この1行目を削除してやれば、うまくいくのでした。
というわけでこの代替をどこかに置けないかと愚考しています。
ですが<a href="index.php?category=1&area=3">のようなパラメータは使えないのですね?
諦めるのもアレなので、もう少し模索してみます。
またよろしくお願いします<(_ _)>

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

投稿記事 by webmaster » 2005年11月30日(水) 20:32

 webmasterです。
 取り急ぎ、試していないのでお時間がなければ無視していただいて結構なのですが、
案を提示させて頂きます。

<xsl:if test="not(group[@key='area'])">全件表示</xsl:if>

 これを、例によって<xsl:for-each select="group">の外に記述して
頂けないでしょうか?

 not(group)と書くと、「全てのgroup要素が無い」という意味になりますが、
 not(group[@key='area']) と書くと、「@key='area'のgroup要素が無い」
という意味になります。

 後ほど時間を取って実際に試してみたいと思います。m(_ _)m

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

投稿記事 by webmaster » 2005年12月01日(木) 09:34

 webmasterです。

コード: 全て選択

<xsl:if test="not(group[@key='area'])">全件表示</xsl:if>
 こちらで意図どおり表示されました。:)
 そもそもこちらの認識がズレていなければ、これでいけると思います。
 お試し頂ければ幸いです。m(_ _)m

blue
パワーユーザー
記事: 70
登録日時: 2005年1月31日(月) 20:49

投稿記事 by blue » 2005年12月01日(木) 21:31

遅くなりましてすみません。
ばっちり巧く行きました。本当にありがとうございます!

返信