ページ切替ナビ:最初と最後のページへのリンク

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

ページ切替ナビ:最初と最後のページへのリンク

投稿記事 by sakura » 2013年7月05日(金) 18:45

こんにちは。いつも助言頂きありがとうございます。

下記トピックスのように
http://cms.al-design.jp/phpbb/viewtopic.php?t=689

<<前へ| 1| 2| 3| 4| 5| 次へ>>

というページ切替ナビゲーションに、追加で「最初」と「最後」のページに遷移するリンクを追加したいのですが、
アドバイスを頂けないでしょうか。

<<最初へ <<前へ| 1| 2| 3| 4| 5| 次へ>> 最後へ>>

という事です。最初へは、単にphpページを読み込みなおしてしまう手もありますが、最後のページの取得方法が分かりません。

よろしくお願い致します。

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

Re: ページ切替ナビ:最初と最後のページへのリンク

投稿記事 by webmaster » 2013年7月09日(火) 18:44

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

最後のページ番号の取得方法は、「last()」というxsltの命令を使います。これは、for-eachに含まれている要素が「最後の要素かどうか」を判断するときに使うもので、具体的には以下のように使います。

<xsl:for-each select="navi">
最後のページ番号:<xsl:value-of select="page[position()=last()]/@id" />
</xsl:for-each>

これで、

最後のページ番号:12

のように出力できます。
page[position()=last()] とは、page要素のフィルタ条件を指定する書き方で、[]の中に、「現在位置(position())が最終位置(last())と等しいもの」という条件を指定しています。

もちろん、この出力では意味がないと思いますので、リンクとして表現する為に、以下のように書きます。属性値の中にデータを埋め込む場合には、{}の中に式を書きます。

<xsl:for-each select="navi">
<a href="?pageno={page[position()=last()]/@id}">最後のページ</a>
</xsl:for-each>

この部分は page要素の @href 属性を使って、以下のように書くこともできます( @href には、その page へジャンプする為のURLパラメータが格納されています )。

<xsl:for-each select="navi">
<a href="{page[position()=last()]/@href}">最後のページ</a>
</xsl:for-each>

XPath表現に慣れていないと分かりにくいかと思いますが、お試し頂ければ幸いです。
うまく動かなかったり、わからない部分があったりなどありましたら、お気軽にご質問ください。

返信