FC2ブログ用の軽量なページネーションを作ったよ
今まで使っていたページネーションの仕様に少し不満があったので自作のものに置き換えました。割りと満足できるものになったのでスクリプトを公開します。
難易度:
不満点1 幅が固定されない
今までは、どんぱんさんの下記のスクリプトを使わせて頂いていました。高機能で、設置も簡単なものです。
設置した時の記事
記事リストにページナビゲーションを追加 - hatena chips
今までのページネーション
画像を見てもらえれば分かりますが、間のドット(.)にまでリンクが張ってあります。
表示しているページ番号と先頭ページまたは末尾ページとの間が2つ以上あいている場合に、「...」のように省略表示をする。この「.」それぞれにもリンクが張ってあり、クリックするとそのページ近辺に飛ぶ。2回のクリックで目的のページ番号に飛べるように作ってある。
設置も簡単で表示したい場所に関数を記述するだけです。
現在ページの前後に表示するページ番号の数を引数で指定する仕様になっています。不満点は、この部分です。トップページの場合は、引数5の場合、上記の画像のようにバランスがいいのですが、途中ページだと、下図のようにちょっと幅をとりすぎます。
かといって、引数の数値を減らすとトップページが物足りなくなります。
引数3の場合
タッチデバイスへの対応も考慮すると、ボタンのサイズや間隔を大きくしたいのでなかなか深刻です。
不満点2 ドットの途中ページヘのリンク
これは、2クリックで目的のページヘ移動できる優れた点なのですが、そのために、引数を減らして表示ボタン数を減らすと、ドット数が増える、という仕様になっており、なかなか思い通りの幅に指定できないことになります。
また、タッチデバイスでは小さすぎて、クリック出来ないなんてことにもなります。
不満点3 document.write で書きだしている
かつてはこれが普通でしたが、HTML5の仕様書では「強く非推奨(strongly discouraged)」とされています。
HTML5でdocument.writeは使ってはいけない? | 3streamer blog
他にないか探してみた
調べてみると下記が設置も簡単で軽量ということらしい。jQueryのプラグインで汎用的に使えるものです。FC2プログのテンプレートや他のサイトでもわりと使用されているようです。
simplePagination.js - A simple jQuery pagination plugin and 3 CSS themes.
FC2プログへの設置方法
ページ送りを設置しました(FC2ブログにsimplepagination.js) - 小モノート(PC&イラスト スキルアップメモ)
ダウンロードしてみると、シンプルという割には結構jsファイルのサイズが大きいですね。9.51KB、圧縮しても5.69KBあります。ちなみに、上記のページ移動スクリプトは1.78 KB(圧縮後 1.06 KB)です。
汎用性を持たせるためには結構大きくなるのですね。また、シンプルと言っても、結構、いろいろな設定や機能もあるようです。FC2プログ専用で、自分に必要な機能だけに絞ったらもっと軽量にできそうです。
ちなみにページネーション(pagination )という用語は今回、調べてみて初めて知りました。
目指す仕様
不満点1の解消
現在ページの前後何ページを表示するかを指定するのではなく、全体の幅(表示するリンク数)を指定するようにする。幅が固定されるのでプログのレイアウトに合わせて設定できる。
不満点2の解消
途中リンクの数を1つに固定する。2クリックで目的のページへ飛べるというのはできなくなりますが、幅を固定するためには必須です。
また、一つだけなら、他のリンクと同じ幅にできるので、タッチデバイスへの対応も問題なくなります。
不満点3の解消
document.write での書き出しを、innerHTMLを利用する方法に変更する。
jQuery を導入済みなら、
スタイルシートでデザインを施して最終的に設置したものが下図です。
先頭ページ、途中ページ、最終ページにかかわらず幅は一定です。(幅を11に設定した例です。)両端と途中の間の[…]にもちょうど真ん中のページヘのリンクを設定しています。
設置法
テンプレートのHTMLのページネーションを表示したい場所にタグを設置します。HTML5対応なら navタグがいいでしょう。特定するために id を付加しておきます。
下記のスクリプトをHTMLに設置します。</body> の直前辺りが推奨です。
2016.10.06追記: ドットのリンクURLが表示のページとずれているというバグを修正しました。
pagenaviの第1引数は設置したタグのid名、第2引数は表示するアイテム数(幅)を設定します。アイテム数は7以上にしてください。5にすると、前後ページへのリンクが表示されませんので、ナビゲーションとして意味がなくなります。
スクリプト圧縮済みのコードは下記
2016.10.6追記: 上記の圧縮済みのコードに間違いがありましたので修正しました。
サイズは圧縮前でも 1.49 KB、圧縮後は 847 bytesです。FC2ブログに特化して、機能を絞り込むことでここまで軽量にできました。
CSSでデザインする
テンプレートのCSSに設定してください。
最低限のスタイルを設定したサンプル
当プログに設置したのは下記のCSSです。
サンプルページ
ページネーション サンプル
2015.05.10追記: 共有プラグインに申請していましたが、本日、公開されました。