ページ番号付きのナビ
ページ番号付きのナビ
こんにちは。
いつもお世話になっております。
http://cms.al-design.jp/phpbb/viewtopic.php?t=130
を見て、ナビゲーションをページ番号付きにして
prev 1 | 2 | 3 next
のようにしたのですが、この場合ページが1ページしかないと
1|
と表示され、ちょっと間が抜けた感じなので
「ページが1ページしかない場合は」
ページナビを非表示にしようと思ったのですが
この条件の記述方法がわかりませんでした。
ご教授いただけると幸いです。
いつもお世話になっております。
http://cms.al-design.jp/phpbb/viewtopic.php?t=130
を見て、ナビゲーションをページ番号付きにして
prev 1 | 2 | 3 next
のようにしたのですが、この場合ページが1ページしかないと
1|
と表示され、ちょっと間が抜けた感じなので
「ページが1ページしかない場合は」
ページナビを非表示にしようと思ったのですが
この条件の記述方法がわかりませんでした。
ご教授いただけると幸いです。
ありがとうございます
tsuさん
こんにちは。アドバイスありがとうございます。
試してみたのですが、ページ数が2ページ以降も
1 | 2 | 3
の部分が消えてしまうようでした。
「page」はそのページの番号を保持しているのでしょうか??
ページが全部で何ページあるのかを知るには・・・と悩み中です。
もしくは、1ページに10件表示、と決まっているので
エントリー総数を調べても良いかなと思って
<xsl:if test="count(entry)>10"></xsl:if>
でくくってみたり
countの中身を page、@id、スキーマ名
などなど闇雲に試しましたが上手く行きませんでした
もう少し色々試してみたいと思います。
こんにちは。アドバイスありがとうございます。
試してみたのですが、ページ数が2ページ以降も
1 | 2 | 3
の部分が消えてしまうようでした。
「page」はそのページの番号を保持しているのでしょうか??
ページが全部で何ページあるのかを知るには・・・と悩み中です。
もしくは、1ページに10件表示、と決まっているので
エントリー総数を調べても良いかなと思って
<xsl:if test="count(entry)>10"></xsl:if>
でくくってみたり
countの中身を page、@id、スキーマ名
などなど闇雲に試しましたが上手く行きませんでした

もう少し色々試してみたいと思います。
なんとなく、出来たっぽいのでお知らせします
うまく行ったように見えるのですが。どうでしょう??

コード: 全て選択
<xsl:for-each select="navi">
<xsl:if test="next">
<xsl:for-each select="page">
<xsl:if test="../@position=@id">
<strong><xsl:value-of select="@id" /></strong>|
</xsl:if>
<xsl:if test="not(../@position=@id)">
<a href="{@href}"><xsl:value-of select="@id" /></a>|
</xsl:if>
</xsl:for-each>
</xsl:if>
<xsl:if test="not(next)">
</xsl:if>
</xsl:for-each>
blueさん
私の書き方が悪いせいか、普通にナビが動作しないのですが。。。
問題の部分にすら辿り着けません。
埋め込みタグは普通に出力で問題ないですよね?
xslt側は
とこんな感じで書けば普通に動作すると思い込んでいるのですが、、、。
私の書き方が悪いせいか、普通にナビが動作しないのですが。。。
問題の部分にすら辿り着けません。
埋め込みタグは普通に出力で問題ないですよね?
コード: 全て選択
<cmsd:entry name="test" design="test" />
コード: 全て選択
<xsl:template match="entry">
〜
<xsl:for-each select="navi">
<xsl:if test="next">
<xsl:for-each select="page">
<xsl:if test="../@position=@id">
<strong><xsl:value-of select="@id" /></strong>|
</xsl:if>
<xsl:if test="not(../@position=@id)">
<a href="{@href}"><xsl:value-of select="@id" /></a>|
</xsl:if>
</xsl:for-each>
</xsl:if>
<xsl:if test="not(next)">
</xsl:if>
〜
</xsl:for-each>
</xsl:template>
結局・・・
度々すみません。
なんかベタな気もするんですが、一応動いてるみたいです。
ツッコミお待ちしております。
コード: 全て選択
<xsl:for-each select="navi">
<xsl:choose>
<xsl:when test="next">
<xsl:for-each select="page">
<xsl:if test="../@position=@id">
<strong><xsl:value-of select="@id" /></strong>|
</xsl:if>
<xsl:if test="not(../@position=@id)">
<a href="{@href}"><xsl:value-of select="@id" /></a>|
</xsl:if>
</xsl:for-each>
</xsl:when>
<xsl:when test="prev">
<xsl:for-each select="page">
<xsl:if test="../@position=@id">
<strong><xsl:value-of select="@id" /></strong>|
</xsl:if>
<xsl:if test="not(../@position=@id)">
<a href="{@href}"><xsl:value-of select="@id" /></a>|
</xsl:if>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
ツッコミお待ちしております。
出来ました!
blueさん
こんにちは。
アドバイスありがとうございます!
書いていただいたコードを丸写ししてみましたら
思った通りの動きになってくれました。
「Nextページがあったら」と言う条件にされたのですね。
やはり条件式を色々発想する力って必要ですね・・・。
しかもchooseとか初めて見るものがいっぱいで
xslの奥深さを知りましたっ。もっと勉強しなくては。
PREVやNEXTボタンをつけたり、
ページが大量にあった場合の処理(これも過去のトピックの丸写しですが)も
記述していたのでそれと合体させたのが下記のcodeです。
これでようやく完成しました。
同じようなことをしたい方がいるかもしれないので
codeを記載いたします。
blueさん、tsuさん、本当にお世話になりました
こんにちは。
アドバイスありがとうございます!
書いていただいたコードを丸写ししてみましたら
思った通りの動きになってくれました。
「Nextページがあったら」と言う条件にされたのですね。
やはり条件式を色々発想する力って必要ですね・・・。
しかもchooseとか初めて見るものがいっぱいで
xslの奥深さを知りましたっ。もっと勉強しなくては。
PREVやNEXTボタンをつけたり、
ページが大量にあった場合の処理(これも過去のトピックの丸写しですが)も
記述していたのでそれと合体させたのが下記のcodeです。
これでようやく完成しました。
同じようなことをしたい方がいるかもしれないので
codeを記載いたします。
blueさん、tsuさん、本当にお世話になりました

コード: 全て選択
<xsl:for-each select="navi">
<xsl:for-each select="prev">
<a href="{@href}"><img src="btn_prev.gif" alt="prev." border="0" /></a>
</xsl:for-each>
<xsl:choose>
<xsl:when test="next">
<xsl:for-each select="page">
<xsl:if test="(@id>=(../@position - 5)) and (@id<=(../@position + 5))">
<xsl:if test="../@position=@id">
<xsl:value-of select="@id" />|
</xsl:if>
<xsl:if test="not(../@position=@id)">
<a href="{@href}"><xsl:value-of select="@id" /></a>|
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:when>
<xsl:when test="prev">
<xsl:for-each select="page">
<xsl:if test="(@id>=(../@position - 5)) and (@id<=(../@position + 5))">
<xsl:if test="../@position=@id">
<xsl:value-of select="@id" />|
</xsl:if>
<xsl:if test="not(../@position=@id)">
<a href="{@href}"><xsl:value-of select="@id" /></a>|
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
<xsl:for-each select="next">
<a href="{@href}"><img src="btn_next.gif" alt="next" border="0" /></a></xsl:for-each>
</xsl:for-each>