ページネーションクラス
CodeIgniter のページネーションクラスは、簡単に利用でき、動的にあるいは保存した設定情報にもとづいて、100%カスタマイズ可能です。
"ページネーション" という言葉をあまり聞いたことがないでしょうか。次のようなページ間のナビゲーションを可能にするリンクのことを指します:
« 最初 < 1 2 3 4 5 > 最後 »
例
次は、コントローラ のメソッド内で、ページネーションを作成する方法を示した簡単なサンプルです:
$this->load->library('pagination');
$config['base_url'] = 'http://example.com/index.php/test/page/';
$config['total_rows'] = 200;
$config['per_page'] = 20;
$this->pagination->initialize($config);
echo $this->pagination->create_links();
Notes:
$config 配列は、ユーザ設定の変数を格納してます。この配列は、上で示すように $this->pagination->initialize メソッドに渡されます。 20程度の項目を設定できますが、例のように、最低限3つの設定項目が必要です。上で示したそれらの設定項目についての説明です:
- base_url ページネーション処理が含まれるコントローラクラス/ メソッドへの完全な URL。 上の例では、URL は、"Test" という名前のコントローラと "page" という名前のメソッドを指しています。 URI を再ルーティング することが可能ですが、その場合は、URL に違った構造を指定する必要があることを忘れないようにしてください。
- total_rows この数字は、ページネーションで表示すべき結果セットの総行数をあらわします。 典型的には、この数字は、データベースクエリが返した総行数になります。
- per_page 1ページあたりに表示したい件数。上の例では、1ページあたり20件を表示します。
表示するページがない場合、create_links() メソッドは、空を返します。
設定ファイルで設定する
上記の方法で設定をセットしたくない場合は、代わりに設定ファイルに設定項目をセットしておくことができます。 単純に、pagination.php という名前の新規ファイルを作成し、$config 配列をそのファイルに追加します。 次に、config/pagination.php に保存すると、自動的にその設定が使われます。 設定ファイルに設定を保存した場合は、$this->pagination->initialize メソッドを使う必要はありません。
ページネーションのカスタマイズ
下記は、表示をカスタマイズするために初期化メソッドで渡すことができる全設定のリストです。
$config['uri_segment'] = 3;
ページネーション 機能は、URI のどのセグメントにページ番号が含まれるかを自動的に決定します。 もしこれを違うようにする場合は、指定することができます。
$config['num_links'] = 2;
選択中のページ番号の前後に表示したい "数字" リンクの数。たとえば、2を指定すると、 このページの一番上の方のサンプルのリンクのように、現在のページのページ番号の両脇に2つの番号リンクが置かれます。
$config['use_page_numbers'] = TRUE;
デフォルトでは、 URI セグメントはページ番号の付与に表示するアイテムの開始番号を使用します。実際のページ番号を表示したい場合には、 TRUE に設定してください。
$config['page_query_string'] = TRUE;
デフォルトでは、ページネーションライブラリは、URI セグメント を使用しているものとして、以下のようなリンクを生成します。
http://example.com/index.php/test/page/20
もし、$config['enable_query_strings'] を TRUE に設定している場合は、リンクは自動的にクエリ文字列に書き換えられます。$config['page_query_string'] を TRUE に設定することで、クエリ文字列を明示的に指定できます。この場合、ページネーションリンクは、以下のようになります。
http://example.com/index.php?c=test&m=page&per_page=20
Note "per_page" はデフォルトのクエリ文字列ですが、$config['query_string_segment'] = 'your_string' で変更できます。
囲みのマークアップの追加
ページネーション全体を何らかのマークアップで囲みたい場合は、2つの設定項目で可能です:
$config['full_tag_open'] = '<p>';
ページの表示結果全体の左側に置かれる開始タグ。
$config['full_tag_close'] = '</p>';
ページの表示結果全体の右側に置かれる終了タグ。
最初のページへのリンクのカスタマイズ
$config['first_link'] = '最初';
左側に表示される "最初" のページへのリンクに指定したいテキスト。表示しない場合は FALSE にします。
$config['first_tag_open'] = '<div>';
"最初" のページへのリンクの開始タグ。
$config['first_tag_close'] = '</div>';
"最初" のページへのリンクの終了タグ。
最後のページへのリンクのカスタマイズ
$config['last_link'] = '最後';
右側に表示される "最後" のページへのリンクに指定したいテキスト。表示しない場合は FALSE にします。
$config['last_tag_open'] = '<div>';
"最初" のページへのリンクの開始タグ。
$config['last_tag_close'] = '</div>';
"最後" のページへのリンクの終了タグ。
"次" のページへのリンクのカスタマイズ
$config['next_link'] = '>';
"次" のページへのリンクに表示させたいテキスト。表示しない場合は FALSE にします。
$config['next_tag_open'] = '<div>';
"次" のページへのリンクの開始タグ。
$config['next_tag_close'] = '</div>';
"次" のページへのリンクの終了タグ。
"前" のページへのリンクのカスタマイズ
$config['prev_link'] = '<';
"前" のページへのリンクに表示させたいテキスト。表示しない場合は FALSE にします。
$config['prev_tag_open'] = '<div>';
"前" のページへのリンクの開始タグ。
$config['prev_tag_close'] = '</div>';
"前" のページへのリンクの終了タグ。
"現在のページ" のページ番号のカスタマイズ
$config['cur_tag_open'] = '<b>';
"現在" のページの番号の開始タグ。
$config['cur_tag_close'] = '</b>';
"現在" のページの番号のの終了タグ。
"数字" のページリンクのカスタマイズ
$config['num_tag_open'] = '<div>';
各 "数字" のページリンクの開始タグ。
$config['num_tag_close'] = '</div>';
各 "数字" のページリンクの終了タグ。
ページ移動リンクを隠す
各ページへのリンクを出力したくない (たとえば "next" と "previous" のリンクのみ表示したい) 場合、次のようにします:
$config['display_pages'] = FALSE;
class 属性の追加
ページネーションクラスで生成される各 a タグに class 属性を追加したい場合、config 配列の "anchor_class" により指定します。