ページネーション ライブラリ
Ziu 付属のページネーションライブラリです。一覧ページなどのリスト表示で簡単にページネーションを行う機能を提供します。
設定
ページネーションライブラリを利用するための設定を行ないます。
単体で利用の設定方法
本ページネーションライブラリは、単体で使用することができます。
$pn = new Paginate;
$pn->config(array(
'page_num' => (int)$page_id,
'limit_row' => 5,
'num_format' => '/%d.html',
));
Ziu で利用の設定方法
Ziu での利用では、ロジッククラスの一覧ページを表示するメソッドを定義して、そのメソッド内で主に利用します。
$pn = lib('paginate', array(
'page_num' => (int)$page_id,
'limit_row' => 5,
'num_format' => '/%d.html',
));
ヘルパー関数 paginate() でページネーションオブジェクトを作成することもできます。
$pn = paginate($page_id, 5, array('num_format' => '/%d.html'));
設定項目
項目 | 型 | 初期値 | 説明 |
---|---|---|---|
base_uri | string | なし | ベースになるURIを指定します。未指定の場合は、自動的に現在のURIとなります。 |
uri_param | string | なし | GETパラメータを指定します。未指定の場合は、自動的に現在のパラメータを引き継ぎます。 |
except_param | string | なし | 除外するGETパラメータ変数名を指定します。カンマ区切りで複数指定することができます。 |
num_format | string | /%d | ページ番号URIフォーマットを指定します。 |
page_num | integer | 1 | 現在のページ番号を指定します。 |
num_link | integer | 3 | ページ番号ナビゲーションリンクの幅を指定します。注1) 参照 |
limit_row | integer | 10 | 1ページに表示するリスト件数を指定します。 |
total_row | integer | 0 | ページネート対象データの全件数を指定します。 |
prev_text | string | << Prev | 前ページナビゲーションリンクのテキストを指定します。 |
next_text | string | Next >> | 次ページナビゲーションリンクのテキストを指定します。 |
first_text | string | [first] | 最初ページナビゲーションリンクのテキストを指定します。 |
last_text | string | [last] | 最終ページナビゲーションリンクのテキストを指定します。 |
layout | string | 注2) 参照 | ページネーションフォーマットを指定します。 [レイアウトキーワード]を指定して置換えすることができます。注3) 参照 |
注1) num_link
が 3 の場合
カレントページ番号の両側に3ページ分のリンクが表示されます。( 1 2 3 4 5 6 7 )
注2) layout
の初期値
<div class="paginate">
<span class="first">:first</span>
<span class="prev">:prev</span>
<span class="pages">:pages</span>
<span class="next">:next</span>
<span class="last">:last</span>
</div>
注3) layout
の [レイアウトキーワード]
:first
first() - 最初ページナビゲーションリンク
:last
last() - 最終ページナビゲーションリンク
:prev
prev() - 前ページナビゲーションリンク
:next
next() - 次ページナビゲーションリンク
:pages
pages() - ページ番号ページナビゲーションリンク
使い方
一例として拡張子「html」ファイルの一覧ページでページネーションをすると仮定します。
1ページ目URL : /member/list
2ページ目URL : /member/list/2.html
ルーティング設定
_conf/routes.php
に以下を追記します。ファイルがない場合は作成。
'member/list/(:num).html' => 'member/list/index/$1',
ルーティング設定は必要に応じて行ないます。拡張子等のカスタマイズを行わない場合は不要。
ページネーション処理
ページネーション処理をロジッククラスで行ないます。
// ページネーションライブラリの初期化
$pn = paginate($page_id, 5, array('num_format' => '/%d.html'));
// モデルオブジェクトでにて表示データリストを取得
render_set(array(
'list' => $dao->getList($pn->limit(), $pn->offset(), $this->req);
));
// モデルオブジェクトから全件数 'total_row' を指定
$pn->config(array('total_row' => $dao->foundRows()));
// ページネーションを生成
render_set(array('page' => $pn->execute()->links()), FALSE);
MySQLの場合のモデルメソッド getList()
では、SQL_CALC_FOUND_ROWS
を利用して表示リストを取得した後に foundRows()
で同条件の全体件数を取得しています。
他のデータベースソフトの場合は、表示リスト取得/全件数取得の2回SQLを実行する必要があるかもしれません。
ビューテンプレート
$page
にバインドされたページネーション結果を表示します。
<div class="pager"><?= $page ?></div>
メソッドリファレンス
ページネーションライブラリのメソッドリファレンスです。
- 設定メソッド
- config() : 初期設定
- 生成メソッド
- ナビゲーション
設定メソッド
config(array $config)
ページネーションライブラリを初期設定をします。
戻り値
型 : object Paginate
引数値
項目 | 型 | 内容 |
---|---|---|
$config | array | 設定を配列で指定 |
$config
に指定する設定項目については、設定を参照して下さい。
例) $pn = lib('paginate')->config(array('page_num' => 2));
生成メソッド
limit()
1ページに表示するリミット値を取得します。
戻り値
型 : integer
引数値
なし
例) $pn->limit();
offset()
現在ページを表示するためのデータベース検索を行うオフセット値を取得します。
戻り値
型 : integer
引数値
なし
例) $pn->offset();
execute()
ページネーションを生成します。事前に page_num
、total_row
の値を指定する必要があります。
戻り値
型 : object Paginate
引数値
なし
例) $pn->execute();
ナビゲーションメソッド
links($html = TRUE)
生成された全ページナビゲーションを取得します。
戻り値
型 : mixed
引数値
項目 | 型 | 内容 |
---|---|---|
$html | boolean | HTMLフラグ |
$html
が TRUE
- ページネーション文字列を返します。
$html
が FALSE
- ページネーションデータをレイアウトキーワードの配列で返します。
配列構成はレイアウトキーワードと対となるメソッドを参照下さい。
:first
=> first()/:last
=> last()/:prev
=> prev()/:next
=> next()/:pages
=> pages()
例) $pn->links();
first($html = TRUE)
最初ページナビゲーションリンクを取得します。
戻り値
型 : mixed
引数値
項目 | 型 | 内容 |
---|---|---|
$html | boolean | HTMLフラグ |
$html
が TRUE : リンク文字列を返します。
$html
が FALSE : array('url' => <リンクURL>)
の配列で返します。
例) $pn->first();
last($html = TRUE)
最終ページナビゲーションリンクを取得します。
戻り値
型 : mixed
引数値
項目 | 型 | 内容 |
---|---|---|
$html | boolean | HTMLフラグ |
$html
が TRUE : リンク文字列を返します。
$html
が FALSE : array('url' => <リンクURL>)
の配列で返します。
例) $pn->last();
pages($html = TRUE)
ページ番号ナビゲーションリンクを取得します。
戻り値
型 : mixed
引数値
項目 | 型 | 内容 |
---|---|---|
$html | boolean | HTMLフラグ |
$html
が TRUE : リンク文字列を返します。
$html
が FALSE : array(array('page_id' => <ページ番号>, 'active' => <アクティブフラグ>, 'url' => <リンクURL>), ...)
の配列で返します。
例) $pn->pages();
next($html = TRUE)
次ページナビゲーションリンクを取得します。
戻り値
型 : mixed
引数値
項目 | 型 | 内容 |
---|---|---|
$html | boolean | HTMLフラグ |
$html
が TRUE : リンク文字列を返します。
$html
が FALSE : array('url' => <リンクURL>)
の配列で返します。
例) $pn->next();
prev($html = TRUE)
前ページナビゲーションリンクを取得します。
戻り値
型 : mixed
引数値
項目 | 型 | 内容 |
---|---|---|
$html | boolean | HTMLフラグ |
$html
が TRUE : リンク文字列を返します。
$html
が FALSE : array('url' => <リンクURL>)
の配列で返します。
例) $pn->prev();